dart - 如何运行 `source_gen` ?

我目前正在尝试使用 built_value在我的 Flutter 项目中,但我对我需要做什么感到困惑......

我在我的 pubspec.yaml 中加入了以下几行(从示例项目中复制):

dev_dependencies:
  build: ^0.7.0
  build_runner: ^0.3.0
  built_value_generator: ^1.0.0

但是,到目前为止,什么都没有发生……在 this video demonstration您可以看到生成的代码在动态更新/重新生成,而开发人员正在更改他的代码。

我是否需要做任何其他事情才能使代码生成工作?启动某种服务器来监视更改并触发代码生成?注册 source_gen 以在某个时候运行?

编辑: 好的,现在我在 lib 文件夹旁边有一个 tool 文件夹。 tool 文件夹包含 build.dartwatch.dart,两者都已更改为匹配包中的 name:我的 pubspec.yamllib 文件夹包含一个文件 user.dart,我从 this tutorial 复制了该文件。 .

library user;

import 'package:built_value/built_value.dart';

part 'user.g.dart';

abstract class User implements Built<User, UserBuilder> {
  String get name;

  @nullable
  String get nickname;

  User._();

  factory User([updates(UserBuilder b)]) = _$User;
}

我现在不应该看到 user.g.dart 文件出现在包含生成代码的 lib 中吗? glob 模式没有任何问题,是吗?

编辑 2: 这是 flutter --version 的输出:

dmta@elite:~/flutter$ flutter --version
Flutter • channel master • https://github.com/flutter/flutter.git
Framework • revision e65d47d4ba (11 hours ago) • 2017-05-15 12:40:20 -0700
Engine • revision 7dd359e165
Tools • Dart 1.23.0-dev.11.11

最佳答案

你需要一个tool/build.dart之类的文件,来生成模型类

// Copyright (c) 2016, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

import 'dart:async';

import 'package:build_runner/build_runner.dart';
import 'package:built_value_generator/built_value_generator.dart';
import 'package:source_gen/source_gen.dart';

/// Build the generated files in the built_value chat example.
Future main(List<String> args) async {
  await build(
      new PhaseGroup.singleAction(
          new GeneratorBuilder([
            new BuiltValueGenerator(),
          ]),
          new InputSet('chat_example', const ['lib/**/*.dart'])),
      deleteFilesByDefault: true);
}

watch.dart 文件,如 https://github.com/google/built_value.dart/tree/master/chat_example/tool 中所示监视源文件中的更改并在修改源文件之一时重新生成 built_value 模型类。

关于dart - 如何运行 `source_gen` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43980217/

相关文章:

intellij-idea - 如何启用 Flutter/Dart 语言实验?

dart - ScrollController 如何检测滚动开始、停止和滚动?

flutter - 将文本包裹在一个圆圈内 (Flutter)

flutter - 如何在单元测试期间访问 StatefulWidget 的状态内容?

authentication - 如何在 Flutter 应用中集成 Azure AD SSO

ios - 将今天的扩展添加到 flutter 应用程序的问题

flutter - 如何使 Bottom Sheet 格的高度跟随 JSON 的项目数量

charts - 如何在 flutter 中制作动态图表?

flutter - 找出 ListView 中的哪些项目是可见的

flutter - 通过 Firebase 使用 Google 登录时, 'ApiExpceptio