Значение Flutter Null не может быть присвоено строке

#flutter #dart

Вопрос:

`это мой код,я хочу объявить идентификатор нулевым, однако из-за нулевой безопасности я должен объявить его как идентификатор:», Но flutter не считает его нулевым . Ниже приведен мой код

 class _EditProductScreenState extends Statelt;EditProductScreengt; {  final _priceFocusNode = FocusNode();  final _descriptionNode = FocusNode();  final _imgurlController = TextEditingController();  final imgurlfocusnode = FocusNode();  final _form = GlobalKeylt;FormStategt;();  var editedproduct = Products_class(  id: '',  title: '',  price: 0.0,  description: '',  imgurl: '',  );  

В приведенном выше примере я не передаю какой-либо идентификатор на страницу, поэтому по умолчанию он должен быть равен нулю, и следует вызвать add product . Однако здесь называется продукт обновления, который выдает мне ошибку диапазона .Как мне решить эту проблему ?

 void _saveform() {  bool isValid = _form.currentState!.validate();  if (!isValid) {  return;  }   _form.currentState!.save();  if (editedproduct.id == null) {  Provider.oflt;productsgt;(context, listen: false).addproduct(editedproduct);  }  if (editedproduct.id != null) {  Provider.oflt;productsgt;(context, listen: false)  .updateProduct(editedproduct.id, editedproduct);  }   Navigator.of(context).pop();  }  

Комментарии:

1. является ли Products_Class классом, который вы написали самостоятельно, или классом пакета? Если это класс, который вы написали самостоятельно, не могли бы вы опубликовать код?

Ответ №1:

Вы, скорее всего, объявили свою переменную, как String id; сейчас, в более низких версиях dart, чтобы обеспечить безопасность при нулевом значении, что может произойти, но теперь вы используете текущий тип, поэтому сделайте его типом, допускающим обнуление, добавив ?

Ответ №2:

Объявите идентификатор переменной класса продукта, например

int? id; // идентификатор теперь может быть равен нулю.