如何编程将Dart代码片段格式化为多行字符串形式输出
Dart 代码转目标字符串格式解决方案
分两种常见场景处理:
场景1:批量处理.dart源码文件(离线处理文本)
直接用正则匹配提取需要的部分再格式化即可,Dart端实现示例:
import 'dart:io'; void main() { // 读取目标.dart文件内容 final sourceCode = File('input.dart').readAsStringSync(); // 匹配Widget code = xxx;的完整结构,捕获Scaffold部分 final regex = RegExp( r'^\s*Widget\s+code\s*=\s*([\s\S]*?);\s*$', multiLine: true, ); final matched = regex.firstMatch(sourceCode); if (matched != null) { final widgetSource = matched.group(1)!; // 拼接三引号,调整缩进得到目标格式 final output = ' """$widgetSource;"""'; // 输出或者写入新文件 print(output); } }
运行后即可直接输出你需要的带三引号的字符串格式。
场景2:运行时把Widget实例转为对应代码字符串
Dart本身没有内置对象转源代码的能力,且Flutter禁用了dart:mirrors反射能力,可选方案如下:
- 用官方的
code_builder包:构建Widget时同步生成对应的AST结构,后续直接导出为源代码字符串 - 若仅处理自定义Widget:可以重写Widget的
toString方法,直接返回你需要的代码格式
临时处理单段代码
直接用IDE多光标功能:选中开头的Widget code = 删除,再在首尾添加三引号即可,VS Code、Android Studio等主流IDE都支持该操作。
内容的提问来源于stack exchange,提问作者jakub
相关产品推荐
相关产品推荐

