Browse Source

加载思维导图网页

newdev_shunjiawei
tanlongsheng 1 year ago
parent
commit
5c75fc4788
  1. 2
      lib/modules/meeting/controllers/meeting_details_controller.dart
  2. 92
      lib/modules/meeting/views/mind_map_tab.dart
  3. 2
      pubspec.yaml

2
lib/modules/meeting/controllers/meeting_details_controller.dart

@ -106,7 +106,7 @@ class MeetingDetailsController extends GetxController
final GetStorage storage = GetStorage(); final GetStorage storage = GetStorage();
Map userInfo = storage.read("user_info"); Map userInfo = storage.read("user_info");
_userId = userInfo['user']['uid']; _userId = userInfo['user']['uid'];
_systemPrompt = AppConfig.agentsystemPrompt("personal_assistant") ?? ''; _systemPrompt = AppConfig.agentsystemPrompt("meet_ assistant") ?? '';
} }
void _getDataDetails() async { void _getDataDetails() async {

92
lib/modules/meeting/views/mind_map_tab.dart

@ -1,12 +1,98 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:webview_flutter/webview_flutter.dart';
class MindMapTab extends StatelessWidget { import '../controllers/meeting_details_controller.dart';
class MindMapTab extends StatefulWidget {
const MindMapTab({super.key}); const MindMapTab({super.key});
@override
State<MindMapTab> createState() => _MindMapTabState();
}
class _MindMapTabState extends State<MindMapTab> {
late final WebViewController _controller;
final _meetingDetailsController = Get.find<MeetingDetailsController>();
@override
void initState() {
super.initState();
String html = '''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MindMap</title>
<script>
window.markmap = {
autoLoader: {
toolbar: true,
},
};
</script>
<script src="https://cdn.jsdelivr.net/npm/markmap-autoloader@latest"></script>
<style>
html,
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.markmap {
width: 100%;
height: 100%;
position: relative;
}
.markmap>svg {
width: 100%;
height: 100%;
}
.markmap>.mm-toolbar {
top: 20px !important;
bottom: initial !important;
}
.markmap>.mm-toolbar>.mm-toolbar-brand {
display: none;
}
.markmap>.mm-toolbar>.mm-toolbar-item:nth-child(2) {
margin-left: 0;
}
</style>
</head>
<body>
<div class="markmap">
<script type="text/template">
---
markmap:
maxWidth: 300
colorFreezeLevel: 2
---
${_meetingDetailsController.meetingDetails.value.summary}
</script>
</div>
</body>
</html>
''';
_controller = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..loadHtmlString(html);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return WebViewWidget(
child: Text(''), controller: _controller,
); );
} }
} }

2
pubspec.yaml

@ -31,7 +31,7 @@ dependencies:
logger: ^2.0.2+1 logger: ^2.0.2+1
flutter_blue_plus: ^1.31.16 flutter_blue_plus: ^1.31.16
just_audio: ^0.9.36 just_audio: ^0.9.36
webview_flutter: ^4.10.0 webview_flutter: ^4.12.0
flutter_easyloading: ^3.0.5 flutter_easyloading: ^3.0.5
package_info_plus: ^8.3.0 package_info_plus: ^8.3.0
file_picker: ^10.1.5 file_picker: ^10.1.5

Loading…
Cancel
Save