Замораживание пакета приводит к ошибке, не допускающей значения NULL, при генерации кода
Я запускаю проект и решил использовать новую версию ** Freezed ** для своих моделей, но когда я запускаю flutter *pub run build_runner build * для генерации кода, я получаю следующую ошибку:
> Параметр 'placeFormattedAddress' of '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
1 ответ
Я наконец нашел ответ; с нулевым безопасным дротиком @ больше не требуется для обозначения обязательного параметра; поэтому вместо @required теперь требуется только синтаксис
Когда нулевой безопасный код вызывается из устаревшего кода, ключевое слово required обрабатывается точно так же, как аннотация @required: отсутствие аргумента вызовет подсказку анализатора.