built_value_generator 7.0.8

  • Readme
  • Changelog
  • Example
  • Installing
  • 97

Built Values for Dart #

Build Status

Introduction #

内置价值提供:

  • 不可变的值类型;
  • EnumClass,行为类似于枚举的类;
  • JSON序列化.

不可变的集合来自built_collection .

请参阅API文档 .

Articles #

Tutorials #

Tools #

Examples #

有关端到端示例,请参见聊天示例 ,该示例在Dart Summit 2016上进行了演示 . 数据模型同时用于客户端和服务器端,使用值类型,枚举和来自built_value的序列化.

简单的例子在这里 .

由于v5.2.0是通过运行pub run build_runner build来执行一次性构建或pub run build_runner watchpub run build_runner watch可以连续监视您的源并在更改时更新生成的输出. 请注意,您需要对built_value_generatorbuild_runner的开发依赖. 参见示例pubspec.yaml .

如果使用Flutter,则等效命令为flutter packages pub run build_runner build . 或者,将您的built_value类放在单独的Dart包中,而不依赖Flutter. 然后,您可以built_value使用built_value .

If using a version before v5.2.0, codegen is triggered via either a build.dart to do a one-off build or a watch.dart to continuously watch your source and update generated output.

Value Types #

就我们的目的而言,如果值类型的字段具有相同的值,则它们被视为可互换的类.

常见的示例包括DateMoneyUrl . 大多数代码引入了自己的值类型. 例如,每个Web应用程序可能都有一些版本的AccountUser .

值类型通常由RPC发送和/或存储以供以后检索.

在Java的AutoValue中,对导致创建内置值库的问题进行 详尽的 讨论 .

简而言之:手工创建和维护值类型需要大量样板. 编写代码很无聊,而且如果您犯了一个错误,很可能会造成难以跟踪的错误.

值类型的任何解决方案都需要允许它们参与面向对象的设计. 例如, Date是执行简单日期操作的代码的正确位置.

AutoValue通过代码生成解决了Java的问题,而Built Values对于Dart也是如此. 为您生成了样板,使您可以指定所需的字段并为类的行为添加代码.

Generating boilerplate for Value Types #

值类型需要一些样板文件才能将其连接到生成的代码. 幸运的是,即使使用您最喜欢的文本编辑器中的代码片段支持,也可以自动完成这些样板工作. 例如,在IntelliJ中,您可以使用以下实时模板:

abstract class $CLASS_NAME$ implements Built<$CLASS_NAME$, $CLASS_NAME$Builder> {
  $CLASS_NAME$._();
  factory $CLASS_NAME$([void Function($CLASS_NAME$Builder) updates]) = _$$$CLASS_NAME$;
}

使用此模板,您只需要手动输入数据类名称的名称,该名称就不能自动执行.

Enum Class #

枚举类为类提供了枚举功能.

枚举对现实世界建模非常有帮助:只要有一组固定的小型选项,枚举就是一个自然的选择. 但是,对于面向对象的设计,枚举必须是类. Dart在这里不够,所以Enum类提供了缺少的东西!

Design:

  • 常量具有nametoString ,可以在switch语句中使用,并且是可以保存代码和实现接口的实型类
  • 生成values方法,该方法返回BuiltSet (不可变集合)中的所有枚举值
  • 生成的采用String valueOf方法

Serialization #

内置值附带JSON序列化支持,使您可以序列化内置值,枚举类和内置集合的完整数据模型. 聊天示例显示了如何轻松地在服务器和客户端上使用Dart构建完整的应用程序.

以下是序列化支持的主要功能:

完全支持面向对象的设计 :您可以设计的任何对象模型都可以序列化,包括全面使用泛型和接口. 其他一些库需要具体类型或不完全支持泛型.

允许对同一数据使用不同的面向对象的模型 . 例如,在客户端服务器应用程序中,客户端和服务器可能需要与其数据模型不同的功能. 因此,允许它们具有映射到相同数据的不同类. 大多数其他库在网络上的类和类型之间强制执行1:1映射.

需要表现良好的类型 . 它们必须是不变的,可以使用接口但不能具体继承,必须具有可预测的可空性, hashCodeequalstoString . 实际上,它们必须是Enum类,内置集合或内置值. 其他一些库允许将行为不佳的类型序列化.

支持对数据模型的更改 . 可以添加或删除可选字段,并且可以将字段从可选字段切换为必填字段,从而使您的数据模型能够不断发展而不会破坏兼容性. 其他一些库破坏了对任何可序列化类的任何更改的兼容性.

它是模块化的 . 每个端点都可以选择要了解的类. 例如,您可以有多个客户端,每个客户端仅知道服务器知道的类的子集. 大多数其他库都是整体的,要求所有端点都知道所有类型.

具有通过内置值进行验证的一流支持 . 强大的数据模型的重要组成部分是确保其有效,因此类可以保证其功能. 其他库也支持验证,但是通常不那么突出.

它是可插入的 . 您可以为自己的类型添加序列化程序,也可以添加在所有序列化程序之前和之后运行的插件 . 这可用于与其他工具进行互操作或为特定类添加手动编码的高性能串行器. 其他一些库不是那么可扩展.

它被设计为多语言 ,可以映射到Java和其他语言中的等效对象模型. 目前仅支持Dart. 由于服务器通常是用Dart编写或由第三方拥有的,因此对其他语言的需求并未实现. 如果您想探索更多语言的支持,请提出一个问题.

Common Usage #

虽然可以在example/lib中找到完整的编译示例,但此处显示了一个常见用法示例. 本示例假定您正在为JSON API编写客户端,该客户端代表如下所示的人:

{
  "id": 12345,
  "age": 35,
  "first_name": "Jimmy",
  "hobbies": ["jumping", "basketball"]
}

使用built_value的相应dart类可能看起来像这样. 请注意,它使用@nullable批注指示该字段不必出现在响应中,还使用@BuiltValueField批注在响应的属性名称和Person成员变量的名称之间进行映射类.

import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:built_collection/built_collection.dart';

part 'person.g.dart';

abstract class Person implements Built<Person, PersonBuilder> {
  static Serializer<Person> get serializer => _$personSerializer;

  // Can never be null.
  int get id;

  @nullable
  int get age;

  @nullable
  @BuiltValueField(wireName: 'first_name')
  String get firstName;

  @nullable
  BuiltList<String> get hobbies;

  Person._();
  factory Person([void Function(PersonBuilder) updates]) = _$Person;
}

FAQ #

Should I check in and/or publish in the generated .g.dart files?

请参阅build_runner文档. 通常,您应该签入生成的文件,但是您确实需要发布它们.

Features and bugs #

请在问题跟踪器中提交功能请求和错误.

Changelog #

7.0.8 #

  • 修复analyzer下限:为0.39.0 ,需要为0.39.3 .

7.0.7 #

  • 确定基于混合生成哪些字段时,在极端情况下修复回归.
  • Tweak generation changes for implicit-casts: false and implicit-dynamic: false. Relax casts again where possible.

7.0.6 #

  • 使生成的代码符合分析器选项strict-raw-types .
  • 允许Serialiers声明符合strict-raw-types或继续像以前一样使用原始类型.
  • 使生成的代码符合分析器选项的implicit-casts: falseimplicit-dynamic: false .

7.0.5 #

  • 内部:修复分析仪弃用警告.

7.0.4 #

  • 将分析插件拆分为新软件包, built_value_analyzer_plugin . built_value_generator analyzer built_value_generator依赖项提高到0.39.0因此它支持扩展方法.

7.0.3 #

  • 添加example文件夹,其中README.md指向示例.

7.0.2 #

  • 内部:清理pedantic v1.9.0棉绒.

7.0.1 #

  • 内部:清理pedantic v1.9.0棉绒.

7.0.0 #

  • 内部:清理built_value_generator > built_value依赖项; 依赖于次要版本而不是主要版本,因此我们将来可以处理两者之间的紧密耦合,而无需将主要版本built_value .

6.8.2 #

  • 修复_finalizeBuilder生成,以便它使用正确的类名称.

6.8.1 #

  • 修复丢失README.mdpackage:built_value .

6.8.0 #

  • 在值类型中支持_initializeBuilder挂钩. 如果找到,它将在创建Builder时执行,并可用于设置默认值.
  • 在值类型中支持_finalizeBuilder挂钩. 如果找到,它将在调用build时执行,并可用于将处理应用于字段.
  • defaultComparedefaultSerialize添加到@BuiltValue . 它们控制@BuiltValueField进行compareserialize的默认值.
  • 添加工具以通过Serializers.mergeSerializersBuilder.mergeSerializersBuilder.mergeAll合并Serializers实例.
  • 错误修复:修复具有多态性和超过一级非实例化类的生成代码.
  • 错误修复:修复了一个名为other的字段时生成的operator== .
  • 修复num反序列化,以便它并不总是转换为double .
  • analyzer凹凸版.
  • 内部:使用自定义代码生成器替换分析器的DartType.displayName .

6.7.1 #

  • 当字段使用具有导入前缀的类型时,修复自定义构建器的代码生成.
  • analyzer_plugin _插件的凹凸版本.

6.7.0 #

  • 生成与"无原始类型"兼容的代码.

6.6.0 #

  • 允许通过mixin提供自己的toString .
  • 为非原始字段修复BuiltValueSerializer(serializeNulls: true) .
  • 停止使用旧的分析器API; 需要分析器0.34.0 .

6.5.0 #

  • 当您想要ISO8601序列化而不是默认的微秒序列化时,添加Iso8601DurationSerializer以供使用.
  • analyzeranalyzer_pluginbuild_config凹凸版本.

6.4.0 #

  • 添加@BuiltValue(generateBuilderOnSetField: true) ,它提供了一种侦听生成的生成器上的set调用的方法.
  • 添加@BuiltValueEnumConst(fallback: true)作为一种方法,可在valueOf或反序列化失败时将枚举const标记为后备.
  • 添加@BuiltValueSerializer(serializeNulls: true作为修改连线格式以显式包含null值的方法.
  • 使合并Serializers实例成为可能:添加一个builderFactories getter来返回已安装的构建器工厂.
  • 随处使用新的Function语法.
  • 错误修复:仅为" Built类型或" Built built_collection集合"集合的字段生成构建器工厂.

6.3.2 #

  • Allow analyzer 0.35.0.

6.3.1 #

  • 当使用带有未指定类型的StandardJsonPlugin且列表长度为1时,修复BuiltList序列化.

6.3.0 #

  • 允许自定义构建器使用setter / getter对而不是普通字段.
  • @BuiltValue添加选项以关闭嵌套生成器的自动实例化.
  • 添加@BuiltValueSerializer批注,该批注提供了为类指定自定义序列化程序的选项.
  • 使合并Serializers实例成为可能:添加一个serializers getter,以返回已安装的序列化程序.
  • RegExp字段添加序列化器.
  • Allow analyzer 0.34.0.

6.2.0 #

新的功能:

  • @BuiltValue添加一个选项以生成可比较的构建器.
  • Duration字段添加序列化器.
  • serializerForTypeserializerForWireName方法添加到Serializers .

Improvements:

  • 在产生的代码中添加对avoid_as ignore.
  • 在生成的输出的末尾,将忽略的棉绒放在一行上.
  • 停止检查的进口built_value.dartEnumClass使用; 这很贵.

Fixes:

  • 在对source_gen错误输出进行更改之后修复测试.
  • 使用新的mixin声明时修复生成.
  • 在枚举值名称中支持美元符号.
  • 使用自定义构建器时,修复嵌套集合.

6.1.6 #

  • 切换到0.33.3版中的新分析器A​​PI.

6.1.5 #

  • analyzer凹凸版本, analyzer_pluginbuildbuild_runner .

6.1.4 #

  • 允许多态基类省略实现Built同时仍实现任何其他接口.
  • wireName设置中允许使用美元字符.
  • 允许build版本1.0.

6.1.3 #

  • 为剩余的已构建集合添加built_value_test支持.

6.1.2 #

  • 当类型使用泛型函数时,修复生成的operator== .
  • 修复为curly_braces_in_control_flow皮棉生成的代码.

6.1.1 #

  • Allow build_runner 0.10.0.

6.1.0 #

  • 改善operator==生成,不要使用dynamic .
  • 改进错误消息和文档,以减少生成器工厂的丢失.
  • 允许build_collection 4.0.0.
  • 修复可序列化类型中存在循环时的代码生成堆栈溢出.
  • 修复在生成错误消息中输出的库名.
  • 将棉绒" unnecessary_const"和" unnecessary_new"的忽略添加到生成的代码.

6.0.0 #

  • 更新到最新的source_gen . 现在,该生成器可以与其他无需手动生成脚本即可写入.g.dart文件的生成器一起使用.
  • 重大更改:现在将忽略此构建器上的"标题"配置.

5.5.5 #

  • 允许SDK 2.0.0.

5.5.4 #

  • 将棉绒线'lines_longer_than_80_chars'和'avoid_catches_without_on_clauses'添加忽略到生成的代码.
  • 颤抖的凹凸版本.

5.5.3 #

  • 突出显示build_runner,build_config和架子的版本.

5.5.2 #

  • 修复违反prefer_equal_for_default_values皮棉的行为.

5.5.1 #

  • 凹凸的版本analyzeranalyzer_plugin .

5.5.0 #

  • 支持使用StandardJsonPlugin序列化BuiltSet . 它已序列化为JSON列表.
  • 当您想要ISO8601序列化而不是自纪元以来的微秒时,请添加Iso8601DateTimeSerializer以供使用.
  • 当将继承的通用字段设置为非通用字段时,修复代码生成.

5.4.5 #

  • 改进有关反序列化失败的错误消息.
  • 将带有dynamic类型参数的检查禁止实例化从构建器移动到值类. 以前,您可以使用生成的_构造函数来避免检查.

5.4.4 #

  • built_value删除了对build_config依赖,并将其添加到built_value_generator .

5.4.3 #

  • 允许source_gen 0.8.0.

5.4.2 #

  • 使StandardJsonPlugin返回Firebase库期望的Map<String, Object>而不是Map<Object, Object> .

5.4.1 #

  • 修复分析器插件加载. 现在,如果您按照建议修改了analysis_options.yaml ,它应该可以工作.

5.4.0 #

  • Add an experimental analyzer plugin that surfaces compile time generation errors as suggestions in your IDE. Turn it on by modifying your analysis_options.yaml file to add plugins entries, example.

5.3.0 #

  • 支持序列化BigInt .
  • 添加对在项目的build.yaml文件中设置生成的标头的支持. 有关example/build.yaml请参见example/build.yaml .
  • 明确禁止对Functiontypedef类型进行序列化; 这些字段需要标记为@BuiltValueField(serialize: false) .
  • 当通过继承获取的字段是另一个源文件中定义的函数类型时,修复生成.
  • 如果@SerializersFor批注列表包含未定义的符号,则失败并显示一条有用的错误消息.

5.2.2 #

  • 修复built_value_generator / build.yaml以在自包中运行generator.
  • 修复end_to_end_test / pubspec.yaml以包括build_runner.
  • 修复内部使用的不推荐使用的SDK常量.
  • 删除在Dart 2中不再起作用的多态示例.
  • 允许颤动0.29.

5.2.1 #

  • DDC的类型修复程序.

5.2.0 #

  • 升级到最新的built_runner . 你不再需要build.dartwatch.dart . 相反,请确保您对built_value_generatorbuild_runner具有dev依赖关系,然后运行pub run build_runner buildpub run build_runner watch .
  • 注意:此版本需要Dart 2 SDK的预发布版本.

5.1.3 #

  • built_collection实例生成更简单的反序列化代码.

5.1.2 #

  • 当手动声明的构建器导致字段不使用嵌套的构建器时,修复生成的序列化代码.

5.1.1 #

  • implement使用@BuiltValue(instantiable: false)多个类时,分析器问题的解决方法.

5.1.0 #

  • 放宽对extends限制,以允许一种特殊情况:在built_valueconst类之间共享代码. 所讨论的基类必须是抽象的,没有字段,没有抽象的getter且不能实现operator==hashCodetoString .

5.0.1 #

  • 允许颤动0.28.

5.0.0 #

引入了以不受支持的方式使用built_value限制:

  • 禁止在built_value类中使用extends . 类应使用implements继承API,并使用extends Object with和来implements API +实现.
  • 导入" package:built_value / built_value.dart"时,禁止使用showas . 生成的代码需要访问包中没有导入前缀的所有符号.
  • 禁止使用可变集合类型ListSetMapListMultimapSetMultimap . 建议built_collection等效的built_collection .

如果这些限制中的任何一个给您造成问题,请在github上提交一个问题: https : //github.com/google/built_value.dart/issues

4.6.1 #

  • 允许手动编码的基本构建器,即具有@BuiltValue(instantaible: false)类的构建器. 现在允许他们不实施Builder (作为dart2js问题的解决方法); 他们被允许省略字段; 并且他们必须省略构造函数和工厂.

4.6.0 #

  • 添加自定义Error类: BuiltValueNullFieldErrorBuiltValueMissingGenericsErrorBuiltValueNestedFieldError . 这些提供有关失败的更清晰的错误消息. 特别是,嵌套生成器中的错误现在报告了封闭的类和字段名称,从而使它们更加有用.
  • 与StandardJsonPlugin一起使用多态时,修复序列化.

4.5.2 #

  • 允许build_collection 3.0.0.
  • 允许颤动0.27.

4.5.1 #

  • 使用摘要分析时修复生成.

4.5.0 #

新的功能:

  • serialize字段添加到@BuiltValueField . 使用此标记字段以在序列化时跳过.
  • wireName字段添加到@BuiltValue@BuiltValueField . 序列化时,使用此选项覆盖类和字段的电线名称.
  • 添加@BuiltValueEnum@BuiltValueEnumConst批注以指定枚举的设置. wireName添加wireName字段以在序列化时覆盖枚举中的线名称.
  • StandardJsonPlugin添加对多态的支持. 现在,它将根据需要通过discriminator符字段指定类型名称,该字段在defualt中称为$ . 可以在StandardJsonPlugin构造函数中进行更改.
  • 添加BuiltListAsyncDeserializer . 如果顶级序列化类型为BuiltList ,则它提供了一种在不阻塞的情况下反序列化大型响应的方法.
  • Uri添加内置的序列化程序.

Improvements:

  • 允许在同一文件中声明多个Serializers .
  • 明确禁止私有字段; 如果找到一个,则会在生成期间失败并显示错误.
  • 改进无类型字段的错误消息.

Fixes:

  • 修复字段包含函数类型时生成的生成器.
  • Fix checks and generated builder when manually maintained builder has generics.
  • 修复从私有类生成的类的名称.
  • 使用前缀导入时修复生成器和序列化器的生成.

4.4.1 #

  • 使用版本0.11.1和build_runner 0.6.0.

4.4.0 #

  • 新的注释BuiltValueField ,用于配置字段. 第一个可用设置是compare . 设置为false可忽略operator==hashCode的特定字段.
  • Generator现在具有const构造函数.

4.3.4 #

  • 已修复build_collection 2.0.0.

4.3.3 #

  • 允许颤动0.26.

4.3.2 #

  • 通过两个继承级别找到字段时修复生成.

4.3.1 #

  • 当字段来自接口但也由mixin实现时,修复生成.

4.3.0 #

  • 支持序列化Int64.

4.2.1 #

  • 正确处理导入前缀; 修复了生成中的一些极端情况.

4.2.0 #

  • 生成的代码将忽略更多的棉绒.
  • 添加解决方法,以便"多态"功能可与dart2js一起使用. 参见example / lib / polymorphism.dart.
  • 明确地与定义自己的operator ==,hashCode和/或toString()的用户打交道. 以前,它们只是行不通. 现在,在编译时禁止使用自定义operator ==和hashCode,但支持自定义toString().

4.1.1 #

  • 现在,生成的代码告诉分析器忽略preferred_expression_function_bodies和sort_constructors_first.
  • 删除生成器中不必要使用的computeNode; 提高发电机性能.

4.1.0 #

  • 改进了对极端情况的注释处理.
  • 从混入以及接口中获取字段声明.

4.0.0 #

  • 修复为分析器生成的多态生成器. 用covariant标记rebuild方法,以便分析器知道例如CatBuilder无法接受Animal .
  • 更新至版本0.10.0和build_runner 0.4.0. 请更新您的build.dartwatch.dart如图所示的例子.

3.0.0 #

  • 修复DateTime序列化; 包括微秒. 这是对JSON格式的重大更改.
  • 添加SerializersFor批注. 通过扫描所有可用的库不再找到要序列化的类,因为这很慢且难以控制. 而是使用"序列化器"声明中的新注释指定需要序列化的类. 您只需要指定" root"类; 您指定的类的字段所需的类会传递地包含在内.

2.1.0 #

  • 添加" nestedBuilders"设置. 默认为true; 设置为false可默认在完全生成的构建器中停止使用嵌套构建器.
  • 允许将字段称为"结果".
  • 当字段是不可实例化的内置值时修复生成:请勿尝试实例化抽象生成器.

2.0.0 #

  • 更新到source_gen 0.7.0.
  • 请以下琐碎的更新您的build.dartwatch.dart :替换字符串GeneratorBuilderPartBuilder .

1.2.1 #

  • 在实现通用的不可实例化的内置类时,修复生成的代码.

1.2.0 #

  • 进行修复,具体取决于手动维护的构建器中完全生成的构建器.
  • 在已实现的接口上拾取字段,因此您不必@覆盖它们.
  • 添加BuiltValue注释以指定设置.
  • 添加"实例化"设置. 如果为false,则不生成任何实现,仅生成一个构建器接口.
  • 多态性支持:您现在可以"实现"一个不可实例化的Built类. 生成的生成器将实现其生成器,因此所有类型均可用.

1.1.4 #

  • Require SDK 1.21 and use the non-comment syntax for generics again.

1.1.3 #

  • 删除了对不再需要的package:meta的依赖.
  • 修复了枚举生成代码中的一些毛发/提示.
  • 对泛型使用注释语法; 使用非注释语法需要未在pubspec.yaml中指定的SDK 1.21.

1.1.2 #

  • 通过使用@memoized而不是预先计算的字段,可以显着提高构建性能.

1.1.1 #

  • 更新分析器并建立依赖关系.

1.1.0 #

  • 添加" built_value_test"库. 它提供了一个匹配器,该匹配器可为build_value实例提供良好的不匹配消息.

1.0.1 #

  • 允许颤动0.25.

1.0.0 #

  • 版本升至1.0.0. 三个次要功能被标记为试验性功能,可能会在不增加主要版本的情况下进行更改:BuiltValueToStringHelper,JsonObject和SerializerPlugin.
  • 使toString()输出可定制.
  • 使默认的toString()输出使用缩进并省略null.
  • 在生成的输出中对序列化器进行排序.

0.5.7 #

  • 使用StandardJsonPlugin反序列化时,请忽略null.

0.5.6 #

  • 为" DateTime"字段添加序列化器.
  • 添加JsonObject类和序列化器.
  • 添加便捷方法Seralizers.serializeWith和deserializeWith.
  • 添加使用StandardJsonPlugin的示例.
  • 支持序列化NaN,INF和-INF为double和num.

0.5.5 #

  • 为" num"字段添加序列化程序.
  • 缺少序列化程序的更好的错误消息.
  • 当存在嵌套的多参数泛型时,修复生成.
  • 根据lint的建议,在生成的代码中使用级联.
  • 允许用户定义任何引用生成的实现的工厂.
  • 为一个字段类添加一个更简单工厂的示例.

0.5.4 #

  • 强制序列化程序声明引用正确的生成名称.
  • 简化无字段类的生成.
  • 将相同的检查添加到生成的operator ==.
  • 使生成的代码与强模式隐式-dynamic:false和隐式-cast:false兼容.

0.5.3 #

  • 将空检查添加到生成的生成器"替换"方法.
  • 在抽象枚举类上出错,失败.
  • 更新至build 0.7.0, build_runner 0.3.0和build_test 0.4.0.

0.5.2 #

  • 支持字段类型的"导入...为".

0.5.1 #

  • 添加@memoized. 用@memoized在build_value类上对getter进行注释,以记住其结果. 这意味着它是在第一次访问时计算的,然后存储在实例中.
  • 在值类型和序列化中支持泛型.
  • 通过StandardJsonPlugin添加对"标准" JSON的支持.

0.5.0 #

  • 更新对分析器的依赖关系,构建,颤动.
  • 重大变化:您的build.dart和watch.dart现在需要导入build_runner / build_runner.dart而不是build / build.dart.

0.4.3 #

  • 修复生成器吸气剂在使用集之前可用.

0.4.2 #

  • 修复棉绒.
  • 允许值类型工厂中的"更新"具有显式的void返回类型.

0.4.1 #

  • 修复一些分析器提示.
  • 如果构建器字段不正确,请修复来自序列化器生成器的异常.

0.4.0 #

  • 添加基准以更新深层嵌套的数据结构.
  • 使建设者懒惰地复制. 这使得对深层嵌套结构的更新快得多:仅复制更新路径上的类,而不是整个树.
  • 重大变化:如果您手动编码生成器,则必须标记@virtual字段,以便可以在生成的代码中覆盖它们.
  • 访问它们时自动创建嵌套的可为空的构建器. 使用嵌套的可为空的构建器修复反序列化.

0.3.0 #

  • 将built_json和built_json_generator合并到built_value和built_value_generator中. 它们打算一起使用,并且作为一个单独的包装更有意义.
  • 当类扩展多个接口时修复生成.
  • 添加BuiltListMultimap和BuiltSetMultimap的序列化.

0.2.0 #

  • 将enum_class和enum_class_generator合并到built_value和built_value_generator中. 它们打算一起使用,并且作为一个单独的包装更有意义.

0.1.6 #

  • 添加对Built和Builder接口的正确类型参数的检查.
  • 用分号而不是{}生成空的构造函数.
  • 将ArgumentError.notNull用于空错误.
  • 拒绝动态字段.
  • 为哈希添加简单的基准. 提高哈希性能.

0.1.5 #

  • 允许颤动0.23.

0.1.4 #

  • 升级分析器,构建和source_gen依赖项.

0.1.3 #

  • 如果不是手工编写的,则生成生成器.
  • 使toString附加逗号以提高清晰度.
  • 改进示例和测试.
  • 修正双重空值检查.

0.1.2 #

  • 重构生成器以划分为逻辑类.

0.1.1 #

  • 提高生成失败时的错误输出.

0.1.0 #

  • 升级到source_gen 0.5.0.
  • 重大变化; 请参阅有关build.dart所需更改的示例.

0.0.6 #

  • 将空检查移至"构建"方法以与强模式分析器兼容.
  • 允许(并忽略)setter.
  • 允许对价值类自定义工厂.

0.0.5 #

  • 修复了对分析器库的更改.

0.0.4 #

  • 对于使用构建器的字段,支持@nullable.
  • 修复source_gen的约束.

0.0.3 #

  • 允许在值类中使用静态字段.
  • 允许在构建器中使用自定义设置器.

0.0.2 #

  • 修复缺少生成器类的错误消息.
  • 允许在值类中使用非抽象的吸气剂.

0.0.1 #

  • 生成器,测试和示例.

example/README.md

Use this package as a library

1. Depend on it

将此添加到包的pubspec.yaml文件中:


dependencies:
  built_value_generator: ^7.0.8

2. Install it

您可以从命令行安装软件包:

与酒吧:


$ pub get

另外,您的编辑器可能支持pub get . 查看您的编辑器文档以了解更多信息.

3. Import it

现在,在Dart代码中,您可以使用:


import 'package:built_value_generator/built_value_generator.dart';
  
Popularity:
描述该程序包相对于其他程序包的受欢迎程度. [更多]
95
Health:
从静态分析得出的代码运行状况. [更多]
100
Maintenance:
反映出软件包的整洁和最新状态. [更多]
100
Overall:
以上的加权分数. [更多]
97
了解有关得分的更多信息.

我们在2020年1月16日分析了此软件包,并在下面提供了得分,详细信息和建议. using: 分析已完成,状态使用以下命令 :

  • 飞镖:2.7.0
  • 高达:0.13.4

Dependencies

Package Constraint Resolved Available
直接依赖
Dart SDK > = 2.3.0 <3.0.0
analyzer >=0.39.3 <0.40.0 0.39.4
build ^1.0.0 1.2.2
build_config > = 0.3.1 <0.5.0 0.4.1+1
built_collection > = 2.0.0 <5.0.0 4.3.2
built_value > = 7.0.0 <7.1.0 7.0.8
quiver > = 0.21.0 <3.0.0 2.1.2+1
source_gen ^0.9.0 0.9.4+7
传递依存关系
_fe_analyzer_shared 1.0.3
args 1.5.2
async 2.4.0
charcode 1.1.2
checked_yaml 1.0.2
collection 1.14.12
convert 2.1.1
crypto 2.1.4
csslib 0.16.1
dart_style 1.3.3
fixnum 0.10.11
glob 1.2.0
html 0.14.0+3
js 0.6.1+1
json_annotation 3.0.1
matcher 0.12.6
meta 1.1.8
node_interop 1.0.3
node_io 1.0.1+2
package_config 1.1.0
path 1.6.4
pub_semver 1.4.2
pubspec_parse 0.1.5
source_span 1.6.0
stack_trace 1.9.3
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
watcher 0.9.7+13
yaml 2.2.0
开发依赖
build_runner ^1.0.0
build_test ^0.10.3
logging ^0.11.0 0.11.4
pedantic ^1.4.0 1.9.0
test ^1.0.0

by  ICOPY.SITE