gpt4 book ai didi

dart - Flutter MaterialPageRoute WidgetBuilder 运行两次

转载 作者:IT王子 更新时间:2023-10-29 06:51:33 25 4
gpt4 key购买 nike

我正在创建一个包含 TextField 的页面,当用户在其中输入 3 个以上的字符时,我会从数据库中获取包含插入文本的行。在我提供的示例中,我通过获取列表来模拟它。向用户显示此列表后,用户可以点击其中一行转到另一页。

gist example

我的问题是,当我点击一行 MaterialPageRoute WidgetBuilder 运行两次时,这是日志:

---------- onTap ----------
---------- MaterialPageRoute ----------
---------- SecondPage build ----------
---------- MaterialPageRoute ----------
---------- SecondPage build ----------

有人可以解释这种行为以及如何解决它吗?

谢谢。

最佳答案

我遇到了同样的问题。这是因为您没有向 FutureBuilder 添加任何条件。因此,当您使用 setState() 时,它会在下次调用。

您可以在 Future 函数中使用一个标志来解决它,以便仅在第一次调用它。例如:

bool flag = true;
flag?FutureBuilder(
future: getData(),
builder: (BuildContext context, AsyncSnapshot snap){
if(snap.connectionState != ConnectionState.done){
return Center(child: CircularProgressIndicator(),);
}else{
return populate();
}
},
):Container();
Future getData()async{
flag = false;
return await fetchFromDatabase();
}

关于dart - Flutter MaterialPageRoute WidgetBuilder 运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com