flutter 代码生成

获取 AST builder 中对象解析是基于 analyzer 模块实现的,对于 Element 对象未封装的元数据, 可以直接通过访问其 AST 获取。 在 LibraryElement 对象中提供了 session 属性用于访问解析库的会话 AnalysisSession 对象, 这里可以查询已解析的元素语法树。 // 初始化参数从 AST 中取 final libraryResult = library.session.getParsedLibraryByElement(library) as ParsedLibraryResult; final declarationResult = libraryResult.getElementDeclaration(field); if (declarationResult != null) { final variableDeclaration = declarationResult.node as VariableDeclaration; if (variableDeclaration.initializer != null) { builder.assignment = code.Code(variableDeclaration.initializer!.toSource()); } } 在 VSCode 中调试生成器 build 库通过生成 .dart_tool/build/entrypoint/build.dart 执行代码生成,调试这个 dart 文件就可以加载自己写的生成器。 在 .vscode 的 launch.json 文件中增加 { "name": "model_gen_example model_gen", "cwd": "packages/model_gen_example", "request": "launch", "program": "....

July 4, 2022 · 1 min · lyincc