#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; // идентификатор теперь может быть равен нулю.