flutter :需要冻结或用 @Default 标记

say*_*bir 5 flutter freezed flutter-freezed

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

\n
environment:\n  sdk: ">=2.7.0<3.0.0"\n\n  freezed: ^0.14.0\n  freezed_annotation: ^0.14.0\n
Run Code Online (Sandbox Code Playgroud)\n

到我的依赖。

\n
dev_dependencies:\n  freezed_annotation: ^0.12.0\n  build_runner:  ^2.0.1\n  retrofit_generator:\n  flutter_localizations:\n    sdk: flutter\n  flutter_test:\n    sdk: flutter\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
import 'package:freezed_annotation/freezed_annotation.dart';\n\npart 'chart_daily_expanded_detailes_model.freezed.dart';\n\n@freezed\nabstract class ChartDailyExpandedDetailesModel\n    with _$ChartDailyExpandedDetailesModel {\n  const factory ChartDailyExpandedDetailesModel({\n    String title,\n    String testNumber,\n    String testPercentage,\n    String icon,\n  }) = _ChartDailyExpandedDetailesModel;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到了这个错误:

\n
[SEVERE] freezed:freezed on lib/new_develop/model/test/chart_daily_expanded_detailes_model.dart:\n\nThe parameter `title` of `ChartDailyExpandedDetailesModel` is non-nullable but is neither required nor marked with @Default\npackage:app/new_develop/model/test/chart_daily_expanded_detailes_model.dart:9:12\n  \xe2\x95\xb7\n9 \xe2\x94\x82     String title,\n
Run Code Online (Sandbox Code Playgroud)\n

这是颤振医生:

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

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

\n

Md.*_*ikh 6

在项目之前添加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;
}

Run Code Online (Sandbox Code Playgroud)