| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import 'dart:async';
- import 'package:flutter/material.dart';
- import 'package:electronic_assistant/base/base_controller.dart';
- import 'package:electronic_assistant/module/talk/mindmap/mind_util.dart';
- import 'package:electronic_assistant/resource/assets.gen.dart';
- import 'package:flutter/rendering.dart';
- import 'package:flutter/widgets.dart';
- import 'package:get/get.dart';
- import 'package:get/get_core/src/get_main.dart';
- import 'package:webview_flutter/webview_flutter.dart';
- import '../../../data/bean/talks.dart';
- import '../../../data/bean/template_bean.dart';
- import '../controller.dart';
- class MindMapController extends BaseController {
- final String? talkId;
- MindMapController(this.talkId);
- TalkController get talkController => Get.find<TalkController>(tag: talkId);
- List<TemplateBean>? get templateList => talkController.templateList.value;
- int? get templateSelectId => talkController.templateSelectId.value;
- RxBool get isShowMindFullScreen => talkController.isShowMindFullScreen;
- StreamSubscription? _talkSummaryListener;
- StreamSubscription? _talkStatusListener;
- GlobalKey repaintKey = GlobalKey();
- bool _isWebViewLoaded = false;
- @override
- void onReady() async {
- super.onReady();
- _talkStatusListener =
- talkController.talkBean.value?.status.listen((status) {
- if (status == TalkStatus.analysisSuccess) {
- _dealTalkSummaryUpdate(talkController.talkBean.value?.summary.value);
- }
- });
- _dealTalkSummaryUpdate(talkController.talkBean.value?.summary.value);
- _talkSummaryListener =
- talkController.talkBean.value?.summary.listen((summary) {
- _dealTalkSummaryUpdate(summary);
- });
- }
- void _loadWebMindData(String summary) {
- talkController.webViewController.loadFlutterAsset(Assets.html.index);
- talkController.webViewController.setNavigationDelegate(
- NavigationDelegate(
- onPageFinished: (String url) async {
- _isWebViewLoaded = true;
- _callUpdateMind(summary);
- },
- onNavigationRequest: (NavigationRequest request) {
- return NavigationDecision.navigate;
- },
- ),
- );
- }
- void _callUpdateMind(String summary) {
- talkController.webViewController
- .callHandler(MindUtil.functionToJsUpdateMind, args: [summary],
- handler: (value) {
- debugPrint('_dealTalkSummaryUpdate mindMap update success: $value');
- });
- }
- void _updateMindData(String summary) {
- if (_isWebViewLoaded) {
- _callUpdateMind(summary);
- } else {
- _loadWebMindData(summary);
- }
- }
- void _dealTalkSummaryUpdate(String? summary) {
- if (summary == null ||
- summary.isEmpty ||
- talkController.talkBean.value?.status.value !=
- TalkStatus.analysisSuccess) {
- return;
- }
- _updateMindData(summary);
- }
- void addTemplateClick() {}
- void fullScreenClick() {
- talkController.isShowMindFullScreen.value = true;
- }
- void exitFullScreenClick() {
- talkController.onExitMindFullScreen();
- }
- @override
- void onClose() {
- super.onClose();
- _talkStatusListener?.cancel();
- _talkSummaryListener?.cancel();
- }
- }
|