【问题标题】:flutter : freezed required nor marked with @Default颤振:需要冻结,也没有用@Default标记
【发布时间】:2021-09-07 13:47:26
【问题描述】:

我正在尝试在我的应用程序上使用 freezed,所以我添加了

environment:
  sdk: ">=2.7.0<3.0.0"

  freezed: ^0.14.0
  freezed_annotation: ^0.14.0

我的依赖。

dev_dependencies:
  freezed_annotation: ^0.12.0
  build_runner:  ^2.0.1
  retrofit_generator:
  flutter_localizations:
    sdk: flutter
  flutter_test:
    sdk: flutter

之后我创建了简单的冻结类:

import 'package:freezed_annotation/freezed_annotation.dart';

part 'chart_daily_expanded_detailes_model.freezed.dart';

@freezed
abstract class ChartDailyExpandedDetailesModel
    with _$ChartDailyExpandedDetailesModel {
  const factory ChartDailyExpandedDetailesModel({
    String title,
    String testNumber,
    String testPercentage,
    String icon,
  }) = _ChartDailyExpandedDetailesModel;
}

但是我收到了这个错误:

[SEVERE] freezed:freezed on lib/new_develop/model/test/chart_daily_expanded_detailes_model.dart:

The parameter `title` of `ChartDailyExpandedDetailesModel` is non-nullable but is neither required nor marked with @Default
package:app/new_develop/model/test/chart_daily_expanded_detailes_model.dart:9:12
  ╷
9 │     String title,

这是颤振医生:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on Linux, locale en_US.UTF-8)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/linux#android-setup for more details.
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] Android Studio
[✓] VS Code (version 1.60.0)
[✓] Connected device (2 available)

! Doctor found issues in 1 category.

我的项目不是空安全的,我想在非空安全状态下使用冻结。

【问题讨论】:

  • 看来您的项目是空安全的。如果您将其更改为String? title;,则该错误将消失。但后来我预测testNumbertestPercentageicon 都会收到相同的错误,并且可以以相同的方式修复。或者您为每个添加一个默认的非空值:String title = "";
  • 我的项目不是空安全@daddygames

标签: flutter freezed flutter-freezed


【解决方案1】:

在项目前添加required,或者您可以使用String? 使其可空,或提供 @Default("") String icon, 等默认值


@freezed
abstract class ChartDailyExpandedDetailesModel
    with _$ChartDailyExpandedDetailesModel {
  const factory ChartDailyExpandedDetailesModel({
    required String title,
    required String testNumber,
     String? testPercentage, //nullable item
    @Default("") String icon, //contain default value
  }) = _ChartDailyExpandedDetailesModel;
}

【讨论】:

  • 我的项目不是空安全的,我的 sdk 是 2.7 所以我收到了这个错误pasteboard.co/KjvyLfC.png
  • 你可以试试freezed: ^0.12.7
  • 我收到了很多关于冲突的错误,因为我使用的是几乎最新版本的库,当我使用 freezed ^0.12.7 时,会产生很多冲突。
  • 删除版本号怎么样,顺便说一句,0.12.7 没有使用空安全,但build 标签状态是faling,我不确定它是否是根。
  • 我以前做过,但我仍然收到non-nullable but is neither required nor marked with @Default 错误
猜你喜欢
  • 2021-07-01
  • 1970-01-01
  • 2019-10-14
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2019-02-26
相关资源
最近更新 更多