我要做的是在使用http客户端从web获取一些信息时,显示一个具有加载状态的小部件。然后根据结果自动导航到不同的路线。
这是我的代码:
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
.