Closed fei1025 closed 10 months ago
开发目标: 桌面端应用
flutter 版本
markdown版本:
markdown_widget: ^2.2.0
如果是代码的话不显示代码块 如果复制的时候,代码区域选择不上
用法代码:
List<Widget> getmd(BuildContext context,String data){ var appState = context.watch<MyAppState>(); // 使用 context.watch 监听 MyAppsState 的变化 bool isDarkMode = appState.isDarkMode; final config = isDarkMode ? MarkdownConfig.darkConfig : MarkdownConfig.defaultConfig; codeWrapper(child, text) => CodeWrapperWidget(child: child, text: text); final config1 = config.copy(configs: [ isDarkMode? PreConfig.darkConfig.copy(wrapper: codeWrapper): PreConfig().copy(wrapper: codeWrapper) ]); return MarkdownGenerator().buildWidgets(data,config: config1 ); }
使用的代码:
class ChatRightInfo extends StatefulWidget { const ChatRightInfo({super.key}); @override _ChatRightInfo createState() => _ChatRightInfo(); } class _ChatRightInfo extends State<ChatRightInfo> { @override Widget build(BuildContext context) { var appState = context.watch<MyAppState>(); List msessage = []; bool isDarkMode=appState.isDarkMode; msessage.add({"user":"me","conter":"##这是一个标题"}); msessage.add({"user":"me","conter":"#### 这是一个普通内容"}); msessage.add({"user":"you","conter": "" "这是一个普通内容" "``` " "class MarkdownHelper {Map<String, Widget> getTitleWidget(m.Node node) " "=> title.getTitleWidget(node);Widget getPWidget(m.Element node) => p.getPWidget(node);" "Widget getPreWidget(m.Node node) => pre.getPreWidget(node); }" " ```"}); return Scaffold( body: SelectionArea( child: ListView.builder( itemCount: msessage.length, itemBuilder: (context, index) { return ListTile( leading:msessage[index]["user"]=="me" ?null :const CircleAvatar(child: Text("gpt")), trailing:msessage[index]["user"]=="me" ?const CircleAvatar(child: Text("you")):null , title: Container( constraints: BoxConstraints( maxWidth: MediaQuery.of(context).size.width * 0.6, // 限制宽度 ), alignment: msessage[index]["user"] == "me" ? Alignment.centerRight : Alignment.centerLeft, child: msessage[index]["user"]=="me"? Container( decoration: BoxDecoration( color:isDarkMode?null:Colors.blue[100], borderRadius: BorderRadius.circular(5), ), child: Text(msessage[index]["conter"]) , ): Column( children: [ Container( decoration: BoxDecoration( color:isDarkMode?null:Colors.grey[200], borderRadius: BorderRadius.circular(5), ), margin: const EdgeInsets.only(right: 100,) , child: Column( children: getmd(context,msessage[index]["conter"])), ), Container( margin: const EdgeInsets.only(right: 100,) , child:Row( mainAxisAlignment: MainAxisAlignment.end, children: [IconButton(onPressed: (){ Clipboard.setData(ClipboardData(text: msessage[index]["conter"])); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text('复制成功'), )); }, icon: Icon(Icons.copy,size: 18,))],) ) ], ), )); }), ), ); } }
额,问题解决,代码格式必须换行才行
但是为啥文字居中展示了
问题解决,布局问题
开发目标: 桌面端应用
flutter 版本
markdown版本:
如果是代码的话不显示代码块 如果复制的时候,代码区域选择不上
用法代码:
使用的代码: