flutter - 冻结的包颤动在代码生成中抛出不可为空的错误
问题描述
我正在启动一个项目并决定为我的模型使用新版本的 **Freezed**,但是当我运行 flutter *pub run build_runner build* 来生成我的代码时,我收到以下错误:
>参数'placeFormattedAddress' 'Address' 是非空包,但既不需要也不需要标记@Default
> 我正在导入 **Meta** 包,还包括 *@required* 注释;有趣的是,当我将参数从命名更改为位置时(没有花括号,效果很好)。
这是代码¿有人可以指出我有什么问题吗?
**这是课程**
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:flutter/foundation.dart';
part 'address.freezed.dart';
part 'address.g.dart';
@freezed
class Address with _$Address {
const factory Address({
@required String placeFormattedAddress, @required String placeName, @required String
placeId,@required double latitude, @required double longitude,}) = _Address;
factory Address.fromJson(Map<String, dynamic> json) =>_$AddressFromJson(json);}
这是我的 pubspec.yaml
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
freezed_annotation: ^0.14.1
json_serializable: ^4.1.0
flutter_hooks: ^0.16.0
hooks_riverpod: ^0.13.1
dev_dependencies:
flutter_test:
sdk: flutter
lint: ^1.0.0
build_runner:
freezed: ^0.14.1+2
解决方案
我终于找到了答案;使用 null-safe dart 不再需要 @ 来标记必需的参数;所以现在只需要语法而不是@required
当从遗留代码调用空安全代码时, required 关键字的处理方式与 @required 注释完全相同:未能提供参数将导致分析器提示。
推荐阅读
- swift - 手势识别器不适用于 UIView
- java - 将多种潜在对象类型作为参数
- flutter - flutter run --no-build 不能与 --release 一起使用
- c# - 在属性中添加新值并添加到对象列表会覆盖已添加对象的属性 C#
- java - 使用 java Scanner 从文件中读取时如何正确识别单词?
- node.js - 世博会无法解决“获取”
- python - Pycharm“标记为模板”丢失
- javascript - 我试图用 JS 改变颜色但它不起作用
- javascript - dropdown.js:186 Uncaught TypeError: u is not a constructor return when I click the dropdown button
- javascript - React useState 钩子似乎没有在显式调用 setter 函数时更新状态