【问题标题】:Freezed package flutter throwing non-nullable error in code generation冻结的包颤动在代码生成中抛出不可为空的错误
【发布时间】:2021-04-03 14:33:31
【问题描述】:

我正在启动一个项目并决定为我的模型使用新版本的 **Freezed**,但是当我运行 flutter *pub run build_runner build* 来生成我的代码时,我收到以下错误:
> 'Address' 的参数 'placeFormattedAddress' 是非空包,但既不是必需的,也不是用@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

【问题讨论】:

    标签: flutter dart non-nullable freezed


    【解决方案1】:

    我终于找到了答案;使用 null-safe dart 不再需要 @ 来标记必需的参数;所以现在的语法只是 required

    而不是 @required

    当从遗留代码调用空安全代码时,必需的关键字是 与@required 注释完全一样对待:未能提供 参数将导致分析器提示。

    https://dart.dev/null-safety/faq

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 2021-10-03
      • 1970-01-01
      • 2014-08-27
      • 2020-03-14
      • 2021-09-22
      • 2019-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多