view.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import 'package:electronic_assistant/base/base_page.dart';
  2. import 'package:electronic_assistant/data/bean/agenda.dart';
  3. import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
  4. import 'package:electronic_assistant/module/home/common_view.dart';
  5. import 'package:electronic_assistant/utils/expand.dart';
  6. import 'package:flutter/cupertino.dart';
  7. import 'package:flutter/gestures.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter/src/widgets/framework.dart';
  10. import 'package:flutter_screenutil/flutter_screenutil.dart';
  11. import 'package:get/get.dart';
  12. import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
  13. import 'package:pull_to_refresh/pull_to_refresh.dart';
  14. import '../../../data/consts/Constants.dart';
  15. import '../../../resource/colors.gen.dart';
  16. import '../../../resource/string.gen.dart';
  17. import '../../agenda/task_item_view.dart';
  18. import '../../chat/view.dart';
  19. import 'controller.dart';
  20. class HomeAgendaView extends BasePage<HomeAgendaController> {
  21. const HomeAgendaView({super.key});
  22. @override
  23. bool immersive() {
  24. return true;
  25. }
  26. @override
  27. Color backgroundColor() {
  28. return '#F6F5F8'.color;
  29. }
  30. @override
  31. Widget buildBody(BuildContext context) {
  32. return Obx(() {
  33. return SmartRefresher(
  34. controller: controller.refreshController,
  35. enablePullUp: false,
  36. onRefresh: controller.onRefresh,
  37. enablePullDown: true,
  38. child: ListView(
  39. padding: EdgeInsets.only(top: 4.w),
  40. children: [
  41. for (var value in controller.agendaList.length >
  42. AgendaRepository.homeMaxShowCount
  43. ? controller.agendaList
  44. .sublist(0, AgendaRepository.homeMaxShowCount)
  45. : controller.agendaList)
  46. _buildAgendaView(value),
  47. _buildSeeMoreView()
  48. ],
  49. ));
  50. });
  51. }
  52. Widget _buildAgendaView(Agenda item) {
  53. return GestureDetector(
  54. onTap: () {
  55. controller.onAgendaItemClick(item);
  56. },
  57. child: taskItemView(
  58. item,
  59. onThinkingClick: () {
  60. ChatPage.startByTalkId(
  61. item.isExample == true
  62. ? ChatFromType.fromTalkExample
  63. : ChatFromType.fromAnalysisBtn,
  64. item.talkId,
  65. agenda: item);
  66. },
  67. onCheckClick: () {
  68. controller.agendaComplete(item);
  69. },
  70. ));
  71. }
  72. Widget _buildSeeMoreView() {
  73. return Obx(() {
  74. if (controller.agendaList.isNotEmpty) {
  75. return Container(
  76. alignment: Alignment.center,
  77. padding: EdgeInsets.only(
  78. top: 16.w, bottom: 100.w + Constants.bottomBarHeight),
  79. child: _buildMoreView(),
  80. );
  81. } else {
  82. return homeEmptyView(StringName.homeAgendaNoData.tr, _buildMoreView());
  83. }
  84. });
  85. }
  86. Widget _buildMoreView() {
  87. return RichText(
  88. text: TextSpan(
  89. text: StringName.homeTalkTodo1.tr,
  90. style: TextStyle(color: ColorName.secondaryTextColor, fontSize: 12.sp),
  91. children: <TextSpan>[
  92. TextSpan(
  93. text: StringName.homeTalkTodo2.tr,
  94. style: TextStyle(color: ColorName.colorPrimary, fontSize: 12.sp),
  95. recognizer: TapGestureRecognizer()
  96. ..onTap = () {
  97. controller.onGoAgendaSeeAll();
  98. }),
  99. ],
  100. ),
  101. );
  102. }
  103. }