![](/img/trans.png)
[英]Flutter: RangeError (index): Invalid value: Valid value range is empty: -1
[英]RangeError (index): Invalid value: Valid value range is empty: 0, Flutter
我正在尝试在 Flutter 中创建一个杂货清单创建者。 我做了一个class,GroceryList,它以标题、提醒日、配料表和配料数量表为参数。 我目前正在编写“完成”按钮,它将获取所有列表信息并将其放入购物清单 class。 以下是相关代码:
final curTitle = new TextEditingController();
int countings = 0;
List<String> finalIngs = [];
List<String> numfinalIngs = [];
String _reminderDay = "Sunday";
Widget build(BuildContext context) {
debugPrint(curTitle.text);
return Scaffold(
appBar: AppBar(
title: Text("New Grocery List"),
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios, color: Colors.white),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ListsPage()),
);
},
),
actions: <Widget>[
IconButton(
icon: new Icon(Icons.check, color: Colors.white),
onPressed: () {
if (finalIngs[0].isNotEmpty &&
numfinalIngs[0].isNotEmpty &&
curTitle.text.isNotEmpty) {
for (int i = 0; i < _newListIngs.length; i++) {
finalIngs.add(_newListIngs[i].text);
debugPrint(finalIngs[i]);
numfinalIngs.add(_newlistnumIngs[i].text);
debugPrint(numfinalIngs[i]);
}
GroceryList cur;
cur.title = curTitle.text;
cur._reminderDay = _reminderDay;
for (int i = 0; i < finalIngs.length; i++) {
cur.ingredients.add(finalIngs[i]);
cur.numIngs.add(numfinalIngs[i]);
}
} else {
showIngAlert(BuildContext context) {
Widget okButton = FlatButton(
child: Text("OK"),
onPressed: () {},
);
// set up the AlertDialog
AlertDialog alert = AlertDialog(
content: Text(
"Please fill all blank spaces, and add as needed."),
actions: [
okButton,
],
);
// show the dialog
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
showIngAlert(context);
}
_newListIngs.clear();
_newlistnumIngs.clear();
},
)
],
),
}
class 还有很多,但为了整洁,我把它去掉了。 我收到上面显示的错误,我知道这意味着什么以及为什么会出现,但我不知道应该如何解决它。 我的意思是,我不知道该怎么做才能获得永久解决方案,而不是摆脱这个错误。 如果您需要更多信息,请告诉我。
我有一个猜测,但我不能确定。 我看到final curTitle = new TextEditingController();
我看到了这个分配的GroceryList cur; cur.title = curTitle.text;
GroceryList cur; cur.title = curTitle.text;
但我看不到 TextEditingController 的 TextField 文本或 curTitle 的任何标题,我认为它是 null。 我希望我能帮上忙。 对不起,如果我的回答是错误的,因为我是新人:) 祝你有美好的日子,开发者!
你有很多列表,所以我不确定哪一个有问题,但你有没有试过检查它们是否是空的,然后再尝试获取里面的内容
if(finalIngs.isNotEmpty && numfinalIngs.isNotEmpty &&
(finalIngs[0]?.isNotEmpty ?? false) && //What if the Strings are null?
(numfinalIngs[0]?.isNotEmpty ?? false) && //What if the Strings are null?
curTitle.text.isNotEmpty)
....
显然,如果列表为空,则其他条件必须为假,但它们不会运行,因为它不是必需的( if
在使用 double & 时发现第一个假时停止),因此不会显示错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.