view.dart 4.7 KB

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