我试图在登录后导航futurebuilder内部。API请求成功完成,但导航在测试时出错。请帮助我如何正确使用futurebuilder。
child: ElevatedButton(
onPressed: () {
// Validate returns true if the form is valid, or false otherwise.
if (_mobileKey.currentState!.validate()) {
FutureBuilder<Loginuser>(
future: loginuser(mobileController.text.toString(),
passwordController.text.toString()),
builder: (context, snapshot) {
if (snapshot.hasData) {
context.go('/Home');
return Text(snapshot.data!.message);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
// By default, show a loading spinner.
return const CircularProgressIndicator();
},
);
}
context.go('/Home');
},
child: const Text('Submit')),
我试过了,它不起作用。我正在使用“go_router:^5.2.4“用于导航
1条答案
按热度按时间hmae6n7t1#
到
FutureBuilder
我设法用这个例子重现了这个问题。让我们来看一下。
如果运行以下代码:
您将看到一个错误:
因此,要解决这个问题,您需要使用
WidgetsBinding.instance.addPostFrameCallback
:但是对于
go_router
的示例,请添加以下行:完整工作示例:
另请参见
setState() or markNeedsBuild called during build