将新项目添加到列表后,如何快速更新列表?

时间:2020-08-17 07:48:36

标签: flutter dart

好的,需要您的指导,才刚刚开始学习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。 列表已更新,但对话框中没有文本

1 个答案:

答案 0 :(得分:0)

您可以使用 initState 并在其中定义默认的testList。

 initState({
  // testList definition
});

将项目添加到列表后,可以调用 setState