我正在尝试在Flutter中创建杂货清单创建者。我创建了一个GroceryList类,该类将标题,提醒日,配料列表以及配料数量列表作为参数。我目前正在编码“完成”按钮,该按钮将获取所有列表信息并将其放入杂货列表类中。这是相关的代码:
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();
},
)
],
),
}
全班还有很多,但是为了整洁,我放弃了它。我收到上面显示的错误,我知道它的含义以及为什么出现该错误,但是我不知道该如何解决。我的意思是,我不知道该如何解决永久解决方案,而不是摆脱此错误。如果您需要更多信息,请告诉我。
答案 0 :(得分:1)
我有一个猜测,但我不确定。我看到GroceryList cur; cur.title = curTitle.text;
,并且看到已分配
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:admin \
gs://[SOURCE_BUCKET]
但是我看不到TextEditingController的TextField文本或curTitle的任何标题,我认为它为null。我希望我能帮上忙。对不起,如果我的答案是错误的,因为我是新来的:)开发人员,祝您生活愉快!
答案 1 :(得分:1)
您有很多列表,所以我不确定哪一个有问题,但是您是否尝试过检查它们是否为空
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)
....
很明显,如果列表为空,则其他条件必须为false,但它们不会运行,因为不需要它(if
在使用double&时找到第一个false时会停止,因此不会) t显示错误