view.dart 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import 'package:electronic_assistant/base/base_page.dart';
  2. import 'package:electronic_assistant/data/bean/agenda.dart';
  3. import 'package:electronic_assistant/module/agenda/detail/controller.dart';
  4. import 'package:electronic_assistant/module/talk/view.dart';
  5. import 'package:electronic_assistant/resource/colors.gen.dart';
  6. import 'package:electronic_assistant/resource/string.gen.dart';
  7. import 'package:electronic_assistant/router/app_pages.dart';
  8. import 'package:electronic_assistant/utils/expand.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:flutter/services.dart';
  11. import 'package:flutter/src/widgets/framework.dart';
  12. import 'package:flutter_screenutil/flutter_screenutil.dart';
  13. import 'package:get/get.dart';
  14. import 'package:get/get_core/src/get_main.dart';
  15. import '../../../dialog/edit_agenda_dialog.dart';
  16. import '../../../resource/assets.gen.dart';
  17. import '../../files/view.dart';
  18. import '../task_item_view.dart';
  19. class AgendaDetailPage extends BasePage<AgendaDetailController> {
  20. const AgendaDetailPage({super.key});
  21. static start(Agenda agenda) {
  22. Get.toNamed(RoutePath.agendaDetail, arguments: agenda);
  23. }
  24. @override
  25. Widget buildBody(BuildContext context) {
  26. return Scaffold(
  27. backgroundColor: "#F6F6F6".toColor(),
  28. appBar: AppBar(
  29. systemOverlayStyle: SystemUiOverlayStyle.dark,
  30. backgroundColor: Colors.transparent,
  31. title: Text(
  32. StringName.agendaDetailTitle.tr,
  33. style: TextStyle(
  34. fontSize: 17.sp,
  35. fontWeight: FontWeight.bold,
  36. color: ColorName.primaryTextColor),
  37. ),
  38. centerTitle: true,
  39. leading: IconButton(
  40. icon: SizedBox(
  41. width: 24.w,
  42. height: 24.w,
  43. child: Assets.images.iconBack.image()),
  44. // Custom icon
  45. onPressed: () {
  46. Get.back();
  47. },
  48. ),
  49. ),
  50. body: Column(
  51. crossAxisAlignment: CrossAxisAlignment.start,
  52. children: [
  53. _buildAgendaDetail(),
  54. SizedBox(height: 12.h),
  55. Padding(
  56. padding: EdgeInsets.symmetric(horizontal: 12.w),
  57. child: Text(StringName.agendaDetailFromThatTalk.tr,
  58. style: TextStyle(
  59. fontSize: 14.sp, color: ColorName.secondaryTextColor)),
  60. ),
  61. SizedBox(height: 12.h),
  62. _buildTalkDetail(),
  63. const Spacer(),
  64. _buildAnalyseButton(),
  65. SizedBox(height: 26.h),
  66. ],
  67. ));
  68. }
  69. Widget _buildAnalyseButton() {
  70. return GestureDetector(
  71. onTap: () {
  72. controller.onGoChatClick();
  73. },
  74. child: Container(
  75. padding: EdgeInsets.symmetric(vertical: 12.h),
  76. margin: EdgeInsets.symmetric(horizontal: 12.w),
  77. width: double.infinity,
  78. decoration: BoxDecoration(
  79. gradient: LinearGradient(
  80. colors: ['#6177F2'.toColor(), '#8B9DFF'.toColor()],
  81. stops: const [0, 1.0],
  82. ),
  83. borderRadius: BorderRadius.circular(8),
  84. ),
  85. child: Align(
  86. child: Text(StringName.homeTalkThinking.tr,
  87. style: TextStyle(fontSize: 16.sp, color: ColorName.white)),
  88. ),
  89. ),
  90. );
  91. }
  92. Widget _buildAgendaDetail() {
  93. if (controller.detailBean.value == null) {
  94. return Container();
  95. }
  96. return Builder(builder: (context) {
  97. return GestureDetector(
  98. onTap: () {
  99. showEditAgendaDialog(context, controller.etFieldController,
  100. hintTxt: controller.detailBean.value?.content,
  101. callback: (newContent) {
  102. Get.back();
  103. controller.onEditAgenda(newContent);
  104. });
  105. },
  106. child: Obx(() {
  107. return taskItemView(controller.detailBean.value!,
  108. isShowAnalyse: false, isLimitLines: false, onCheckClick: () {
  109. controller.onTaskDoneClick();
  110. });
  111. }),
  112. );
  113. });
  114. }
  115. @override
  116. Color backgroundColor() {
  117. return "#F6F6F6".toColor();
  118. }
  119. Widget _buildTalkDetail() {
  120. return Obx(() {
  121. if (controller.talkBean.value == null) {
  122. return Container();
  123. }
  124. return Padding(
  125. padding: const EdgeInsets.symmetric(horizontal: 12).w,
  126. child: buildFileTalkItem(controller.talkBean.value!, onTap: () {
  127. TalkPage.start(controller.talkBean.value!);
  128. }),
  129. );
  130. });
  131. }
  132. }