好的,需要您的指导,才刚刚开始学习flutter(我是Java开发人员):
想象一下,我们有一个简单的ListTile小部件列表:
列表testList = [
ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(url
),
),
title: Text('Title text'),
subtitle: Text('Subtitle text'),
trailing: smth here also,
), ];
想象一下这个数组中有1-2-3-n个项目。
现在,我们要在列表视图中显示此列表,这似乎很简单:
children: <ListTile>[
for(ListTile e in testList)
e
],
现在我们拥有了所有要素。 好的,现在我想添加新的列表图块,这就是我遇到的问题:
让我们添加一个对话框,每次按下按钮时我都会调用该对话框:
TextEditingController txtController = TextEditingController();
Future<String> createTxtDialog(BuildContext context) {
return showDialog(context: context, builder: (context) {
return SimpleDialog(
title: Text("Input text"),
children: [
TextField(
controller: txtController,
),
MaterialButton(
elevation: 5.0,
child: Text('Submit'),
onPressed: () {
Navigator.of(context).pop(txtController.text.toString());
},
)
],
);
});
}
好的,现在让我们用按钮调用此函数: //在这里,我想将新项目添加到现有列表中并立即获取更新列表: //我将创建仅具有一行的新列表图块-这将是从文本控制器接收到的文本:
floatingActionButton: FloatingActionButton(
onPressed: () {
createTxtDialog(context);
setState(() {
testList.add(
ListTile(
leading: CircleAvatar(
backgroundImage: NetworkImage(url
),
),
title: Text(txtController.text),
),
);
});
},),
所以问题是:
我的列表正常更新,一切正常,但是直到重新加载应用程序后我才能看到更新后的列表。 我想“即时”更新列表-将新项目添加到列表中后-我的新项目将立即显示
如何解决? 先感谢您! :)
P.S。 列表已更新,但对话框中没有文本
答案 0 :(得分:0)
您可以使用 initState 并在其中定义默认的testList。
initState({
// testList definition
});
将项目添加到列表后,可以调用 setState 。