Flutter类型定义插件dart_types的使用
Flutter类型定义插件dart_types的使用
dart_types
是一个用于构建和展示 Dart 类型图的工具。它有助于可视化和理解特定库或包的类型层次结构。
特性:
- 可以生成给定 Dart 类型或给定库/库的类型图。
- 可以生成 Mermaid 代码(作为代码、查看 URL、编辑 URL 或图像 URL)。
- 列出路径内的所有类型。
注意:目前忽略泛型。
安装
要将该包作为 CLI 工具安装,运行以下命令:
dart pub global activate dart_types
可用命令包括:
Global options:
-h, --help 打印此使用信息。
-v, --[no-]verbose 输出详细信息。
可用命令:
list 列出给定 `path` 中的所有可用类型
mermaid 生成 Mermaid 图表(代码、编辑器 URL、查看器 URL 或图像 URL)
运行 "dart_types help <command>" 了解关于某个命令的更多信息
使用 dart_types mermaid
生成 Mermaid 图表(代码、编辑器 URL、查看器 URL 或图像 URL)
用法: dart_types mermaid [参数]
-h, --help 打印此使用信息。
-p, --path 指定包含类型(可以多个)的文件/项目的路径
-f, --filter 使用模式过滤类型(可以多个)
-x, --[no-]ignore-privates 忽略所有私有类型
-t, --type 限定类型层次结构到特定类型(可以多个)
-c, --code 打印 Mermaid 图表代码
-u, --url 生成一个指向 mermaid.live 图表查看器的 URL
-e, --url-edit 生成一个指向 mermaid.live 图表编辑器的 URL
-i, --url-image 生成一个指向 mermaid.ink 图像的 URL
-g, --graph-type 指定图表类型:Top Bottom, Bottom Up, Right Left, Left Right
[TB, BT, RL, LR (默认)]
注意:有关如何作为包使用的示例,请参阅 example 文件夹。
示例
运行以下命令:
dart_types mermaid --path /path/to/flutter/sdk/packages/flutter/lib --code -ignore-privates --type StatelessWidget
生成以下 Mermaid 图表代码:
%% To view the graph, copy the code below to:
%% https://mermaid.live/
graph LR
931422573("Object") --> 639058955("Widget")
639058955 --> 464006715("StatelessWidget")
639058955 --> 416054233("PreferredSizeWidget")
464006715 --> 1056914755("Builder")
464006715 --> 262732828("CallbackShortcuts")
464006715 --> 337536055("CheckedModeBanner")
464006715 --> 610219950("Container")
464006715 --> 936772830("DefaultTextEditingShortcuts")
464006715 --> 162789820("DisplayFeatureSubScreen")
464006715 --> 609146547("ExcludeFocus")
464006715 --> 49112299("ExcludeFocusTraversal")
464006715 --> 747420043("GestureDetector")
464006715 --> 146799707("GridPaper")
464006715 --> 902421044("HeroMode")
464006715 --> 742478379("HtmlElementView")
464006715 --> 821894802("Icon")
464006715 --> 679314("ImageIcon")
464006715 --> 599778847("IndexedStack")
464006715 --> 386259944("KeyboardListener")
464006715 --> 756704846("KeyedSubtree")
464006715 --> 341174972("ModalBarrier")
464006715 --> 339198387("NavigationToolbar")
464006715 --> 409547886("OrientationBuilder")
464006715 --> 48107699("PageStorage")
464006715 --> 743848276("Placeholder")
464006715 --> 456230168("PlatformSelectableRegionContextMenu")
464006715 --> 42097335("PositionedDirectional")
464006715 --> 961235098("PreferredSize")
464006715 --> 1065842558("RawMagnifier")
464006715 --> 472365102("ReorderableDragStartListener")
464006715 --> 427683055("SafeArea")
464006715 --> 286068455("ScrollView")
464006715 --> 445477711("SingleChildScrollView")
464006715 --> 126306520("SliverConstrainedCrossAxis")
464006715 --> 592348889("SliverFillRemaining")
464006715 --> 83650908("SliverFillViewport")
464006715 --> 827955045("SliverPersistentHeader")
464006715 --> 378627107("SliverSafeArea")
464006715 --> 716412635("SliverVisibility")
464006715 --> 460084456("Spacer")
464006715 --> 900189511("Text")
464006715 --> 535960679("Title")
464006715 --> 638939478("TwoDimensionalScrollView")
464006715 --> 661441418("UnconstrainedBox")
464006715 --> 521488773("View")
464006715 --> 956347801("ViewAnchor")
464006715 --> 740469611("Visibility")
760877175("BoxScrollView") --> 733462125("GridView")
760877175 --> 167943787("ListView")
416054233 --> 961235098
472365102 --> 721803713("ReorderableDelayedDragStartListener")
286068455 --> 760877175
286068455 --> 257018606("CustomScrollView")
style 464006715 color:#7FFF7F
注意:要查看输出,请将图表粘贴到 https://mermaid.live。
或者,你可以直接使用以下命令生成 URL:
dart_types mermaid --path /path/to/flutter/sdk/packages/flutter/lib --url -ignore-privates --type StatelessWidget
更多关于Flutter类型定义插件dart_types的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter类型定义插件dart_types的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
dart_types
是一个用于生成 Dart 类型定义的 Flutter 插件。它可以帮助开发者自动生成类型定义文件,特别是在处理 JSON 数据时,可以减少手动编写模型类的工作量。
安装 dart_types
插件
首先,你需要在 pubspec.yaml
文件中添加 dart_types
插件的依赖:
dev_dependencies:
dart_types: ^1.0.0
然后运行 flutter pub get
来安装依赖。
使用 dart_types
生成类型定义
假设你有一个 JSON 文件 user.json
,内容如下:
{
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}
你可以使用 dart_types
来生成对应的 Dart 类。
-
创建
build.yaml
文件在项目根目录下创建一个
build.yaml
文件,内容如下:targets: $default: builders: dart_types|dart_types: enabled: true
-
运行生成命令
在终端中运行以下命令来生成类型定义:
flutter pub run build_runner build
这将会在
lib/models
目录下生成一个user.dart
文件,内容如下:// GENERATED CODE - DO NOT MODIFY BY HAND part of 'user.dart'; class User { final String name; final int age; final String email; User({ required this.name, required this.age, required this.email, }); factory User.fromJson(Map<String, dynamic> json) { return User( name: json['name'] as String, age: json['age'] as int, email: json['email'] as String, ); } Map<String, dynamic> toJson() { return { 'name': name, 'age': age, 'email': email, }; } }
-
使用生成的类
现在你可以在你的项目中使用生成的
User
类:import 'models/user.dart'; void main() { final userJson = { "name": "John Doe", "age": 30, "email": "john.doe@example.com" }; final user = User.fromJson(userJson); print(user.name); // 输出: John Doe }
自定义生成选项
你可以通过配置 build.yaml
文件来自定义生成的代码。例如,你可以指定生成的类名、文件路径等。
targets:
$default:
builders:
dart_types|dart_types:
enabled: true
options:
class_name: "CustomUser"
output_directory: "lib/custom_models"