gpt4 book ai didi

Flutter FutureBuilder 并使用 Navigator.pushNamed 导航到不同的路线

转载 作者:行者123 更新时间:2023-12-04 17:31:57 27 4
gpt4 key购买 nike

我想要做的是在我使用 http 客户端从网络获取一些信息时显示一个具有加载状态的小部件。然后根据结果自动导航到不同的路线。

这是我的代码:

class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: FutureBuilder(
future: http.get("https://exmaple.com"),
builder: (BuildContext context, AsyncSnapshot<http.Response> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('ConnectionState.none.');
case ConnectionState.active:
case ConnectionState.waiting:
return Text('Awaiting result...');
case ConnectionState.done:
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
// Navigator.pushNamed(context, '/route2');
return Text('Result: ${snapshot.data.statusCode}');
}
}
return null; // unreachable
},
)));
}
}

问题是,如果我添加 Navigator.pushNamed(context, '/route2');它会抛出一个错误。

我明白为什么它会抛出错误。我不知道如何实现这一目标。我发现的所有示例都表明导航发生在一些用户迭代之后 onPressed .

最佳答案

使您的小部件有状态并使用 initState 函数向服务器发出请求:

  @override
void initState() {
super.initState();
http.get("https://exmaple.com").then((v) => Navigator.of(context).pushNamed('/route2'));
}

关于Flutter FutureBuilder 并使用 Navigator.pushNamed 导航到不同的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787608/

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