繁体   English   中英

如何在 dart flutter 中处理内部构建方法中的导航

[英]how to handle navigation inside build method in dart flutter

我有一个应用程序,我想在其中实现手指身份验证。 我已经编写了用于身份验证的类工作正常。 现在的情况是,当应用程序启动时,它会加载我有一个表单的登录页面。 如果成功,我想先检查指纹认证,然后我想切换到主页,否则如果不成功,则显示登录表单。 这是我的代码:

 final LocalAuthenticationService _localAuth = locator<LocalAuthenticationService>();
 @override
 Widget build(BuildContext context) {
   _localAuth.authenticate().then((result){
       if(result)
         Navigator.pushReplacementNamed(context, Routes.HomePage);
   });
   return return Scaffold(
    body: Container(
        decoration: BoxDecoration(image: _builSplashBackgroundImage()),
        child: _buildLoginForm()
   );
}

导航到主页时出现此错误:未处理的异常:查找已停用小部件的祖先是不安全的。

这很简单。 只需使用 FutureBuilder 像这样实现它

final LocalAuthenticationService _localAuth = locator<LocalAuthenticationService>();


@override
 Widget build(BuildContext context) {
   return Scaffold(
    body:  FutureBuilder( 
future: _localAuth.authenticate,
builder:(ctx, snapshot)=>!snapshot.hasData? CircularProgressIndicator():
snapshot.data == true?Routes.HomePage:
 Container(
        decoration: BoxDecoration(image: _builSplashBackgroundImage()),
        child: _buildLoginForm()
   )));
}

此代码将在加载用户的连接 state 时显示进度条。 你可以在这里了解更多关于 FutureBuilder

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM