gpt4 book ai didi

flutter - FutureBuilder 返回数据后如何导航到屏幕?

转载 作者:行者123 更新时间:2023-12-03 04:53:29 25 4
gpt4 key购买 nike

当应用程序使用 Future 初始化时我从远程 JSON 获取数据文件。

而不是 return -在 widgetFutureBuilder有数据,我想导航到新屏幕。

我现在使用的方式:

@override
Widget build(BuildContext context) {
return FutureBuilder<void>(
future: getDataFromJsonFile(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return AnotherScreen();
});
}

相反,我想导航到一个新屏幕:
@override
Widget build(BuildContext context) {
return FutureBuilder<void>(
future: getDataFromJsonFile(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
Navigator.pushReplacementNamed(context, "/manatx");
});
}

显然,第二个代码块导致错误: setState() or markNeedsBuild() called during build
有谁知道如何实现这一目标?

最佳答案

使用 WidgetsBinding.instance.addPostFrameCallback() 将等待你 Widget build 调用里面的 Action ,看:

@override
Widget build(BuildContext context) {
return FutureBuilder<void>(
future: getDataFromJsonFile(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
//Wait flutter finish build...
WidgetsBinding.instance.addPostFrameCallback((_) {
//When finish, call actions inside
Navigator.pushReplacementNamed(context, "/manatx");
});
});
}

关于flutter - FutureBuilder 返回数据后如何导航到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60977667/

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