view.dart 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import 'package:electronic_assistant/base/base_page.dart';
  2. import 'package:electronic_assistant/data/bean/talks.dart';
  3. import 'package:electronic_assistant/module/talk/mindmap/controller.dart';
  4. import 'package:electronic_assistant/resource/assets.gen.dart';
  5. import 'package:electronic_assistant/resource/colors.gen.dart';
  6. import 'package:flutter/cupertino.dart';
  7. import 'package:flutter/src/widgets/framework.dart';
  8. import 'package:flutter_screenutil/flutter_screenutil.dart';
  9. import 'package:get/get.dart';
  10. import 'package:get/get_core/src/get_main.dart';
  11. import '../../../resource/string.gen.dart';
  12. import '../common_view.dart';
  13. import 'mindview/view.dart';
  14. class MindMapView extends BasePage<MindMapController> {
  15. final String? talkId;
  16. MindMapView(this.talkId, {super.key}) {
  17. Get.lazyPut(() => MindMapController(talkId), tag: talkId);
  18. }
  19. @override
  20. get controller => Get.find<MindMapController>(tag: talkId);
  21. @override
  22. bool immersive() {
  23. return true;
  24. }
  25. @override
  26. Widget buildBody(BuildContext context) {
  27. return Obx(() {
  28. if (controller.talkController.talkBean.value?.status.value ==
  29. TalkStatus.analysisSuccess) {
  30. return _buildMindView();
  31. } else if (controller.talkController.talkBean.value?.status.value ==
  32. TalkStatus.analysisFail) {
  33. return getTalkFailView();
  34. } else {
  35. return getTalkAnalyseView(
  36. controller.talkController.isUploading.value == true &&
  37. controller.talkController.talkBean.value?.status.value ==
  38. TalkStatus.notAnalysis
  39. ? StringName.talkUploadingFileTip.tr
  40. : controller
  41. .talkController.talkBean.value?.progressContent.value ??
  42. '',
  43. controller.talkController.isUploading.value == true &&
  44. controller.talkController.talkBean.value?.status.value ==
  45. TalkStatus.notAnalysis
  46. ? controller.talkController.uploadProgress.value
  47. : controller.talkController.talkBean.value?.progress.value
  48. ?.toDouble() ??
  49. 0.0);
  50. }
  51. });
  52. }
  53. Widget _buildMindView() {
  54. return Stack(
  55. children: [
  56. MindView(controller.talkController.talkBean.value!.summary.value!),
  57. Obx(() {
  58. return Visibility(
  59. visible: !controller.isShowMindFullScreen.value,
  60. child: Container(
  61. margin: EdgeInsets.only(top: 14.h),
  62. child: buildTemplateView(
  63. controller.templateList, controller.templateSelectId),
  64. ),
  65. );
  66. }),
  67. GestureDetector(
  68. onTap: () {
  69. controller.fullScreenClick();
  70. },
  71. child: Obx(() {
  72. return Visibility(
  73. visible: !controller.isShowMindFullScreen.value,
  74. child: Align(
  75. alignment: const Alignment(0.0, 0.7),
  76. child: Container(
  77. decoration: BoxDecoration(
  78. color: ColorName.black60,
  79. border: Border.all(color: ColorName.white20, width: 1.w),
  80. borderRadius: BorderRadius.circular(24.w)),
  81. padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 6.w),
  82. child: IntrinsicWidth(
  83. child: Row(
  84. children: [
  85. Assets.images.iconMindFullScreen
  86. .image(width: 16.w, height: 16.w),
  87. SizedBox(width: 2.w),
  88. Text(StringName.talkMindFullScreen.tr,
  89. style: TextStyle(
  90. fontSize: 14.sp,
  91. color: ColorName.white70,
  92. height: 1))
  93. ],
  94. ),
  95. ),
  96. ),
  97. ),
  98. );
  99. }),
  100. ),
  101. _buildFullScreenBackView()
  102. ],
  103. );
  104. }
  105. Widget _buildFullScreenBackView() {
  106. return Obx(() {
  107. return Visibility(
  108. visible: controller.isShowMindFullScreen.value,
  109. child: GestureDetector(
  110. onTap: () {
  111. controller.exitFullScreenClick();
  112. },
  113. child: SafeArea(
  114. child: Container(
  115. margin: EdgeInsets.only(left: 4.w, top: 8.w),
  116. child: Assets.images.iconMindFullScreenBack
  117. .image(width: 60.w, height: 60.w),
  118. ),
  119. ),
  120. ),
  121. );
  122. });
  123. }
  124. }