Flutter中如何使用build_runner

在Flutter项目中,build_runner的具体使用流程是什么?我按照官方文档安装了build_runner和json_serializable依赖,但运行flutter pub run build_runner build时总是报错。请问:

  1. 正确的依赖配置应该包含哪些内容?
  2. 常见的build_runner错误该如何解决?
  3. 生成的代码是否需要手动维护?
    希望能得到具体的操作示例和避坑指南。
2 回复

在Flutter中使用build_runner,首先在pubspec.yaml中添加依赖:

dev_dependencies:
  build_runner: ^2.4.0

然后运行命令生成代码:

flutter pub run build_runner build

如需自动监听文件变化,使用:

flutter pub run build_runner watch

若遇到冲突,可添加--delete-conflicting-outputs参数。

更多关于Flutter中如何使用build_runner的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,build_runner 是一个代码生成工具,常用于自动生成代码,如JSON序列化、路由映射等。以下是基本使用步骤:

  1. 添加依赖
    pubspec.yaml 中添加依赖:

    dependencies:
      # 根据需求添加,如 json_annotation
      json_annotation: ^4.8.1
    
    dev_dependencies:
      build_runner: ^2.4.6
      # 对应生成器,如 json_serializable
      json_serializable: ^6.7.1
    
  2. 创建模型类
    例如,使用 json_annotation 标注模型:

    import 'package:json_annotation/json_annotation.dart';
    part 'user.g.dart'; // 生成的文件
    
    [@JsonSerializable](/user/JsonSerializable)()
    class User {
      final String name;
      final int age;
      
      User({required this.name, required this.age});
      
      factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
      Map<String, dynamic> toJson() => _$UserToJson(this);
    }
    
  3. 运行代码生成
    在终端执行以下命令生成代码:

    flutter pub run build_runner build
    

    若遇到冲突,使用 --delete-conflicting-outputs 参数:

    flutter pub run build_runner build --delete-conflicting-outputs
    
  4. 监听变化(可选)
    开发时可用 watch 模式自动重新生成:

    flutter pub run build_runner watch
    

常见用途

  • JSON序列化(配合 json_serializable
  • 路由生成(如 go_router
  • 状态管理(如 freezed 生成不可变类)

确保模型类中的 part '文件名.g.dart'; 路径正确,且注解(如 [@JsonSerializable](/user/JsonSerializable)())已添加。

回到顶部