view.dart 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. // ),
  66. // );
  67. // }),
  68. GestureDetector(
  69. onTap: () {
  70. controller.fullScreenClick();
  71. },
  72. child: Obx(() {
  73. return Visibility(
  74. visible: !controller.isShowMindFullScreen.value,
  75. child: Align(
  76. alignment: const Alignment(0.0, 0.7),
  77. child: Container(
  78. decoration: BoxDecoration(
  79. color: ColorName.black60,
  80. border: Border.all(color: ColorName.white20, width: 1.w),
  81. borderRadius: BorderRadius.circular(24.w)),
  82. padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 6.w),
  83. child: IntrinsicWidth(
  84. child: Row(
  85. children: [
  86. Assets.images.iconMindFullScreen
  87. .image(width: 16.w, height: 16.w),
  88. SizedBox(width: 2.w),
  89. Text(StringName.talkMindFullScreen.tr,
  90. style: TextStyle(
  91. fontSize: 14.sp,
  92. color: ColorName.white70,
  93. height: 1))
  94. ],
  95. ),
  96. ),
  97. ),
  98. ),
  99. );
  100. }),
  101. ),
  102. _buildFullScreenBackView()
  103. ],
  104. );
  105. }
  106. Widget _buildFullScreenBackView() {
  107. return Obx(() {
  108. return Visibility(
  109. visible: controller.isShowMindFullScreen.value,
  110. child: GestureDetector(
  111. onTap: () {
  112. controller.exitFullScreenClick();
  113. },
  114. child: SafeArea(
  115. child: Container(
  116. margin: EdgeInsets.only(left: 4.w, top: 8.w),
  117. child: Assets.images.iconMindFullScreenBack
  118. .image(width: 60.w, height: 60.w),
  119. ),
  120. ),
  121. ),
  122. );
  123. });
  124. }
  125. }