如何在 Flutter 加载时导航到另一个页面

Edm*_*arz 6 flutter

如果没有登录用户,我想导航到登录页面,否则显示主页。我想过Navigator.of(context).push()在 build 方法中有条件地调用,但这会触发异常。是否有一些我可以覆盖的方法?

更新以添加主页小部件

class HomePage extends StatelessWidget {
final AppUser user;

const HomePage({Key key, this.user}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
    appBar: AppBar(
      title: Text('Rera Farm'),
      actions: <Widget>[
        PopupMenuButton(
          itemBuilder: (BuildContext context) {
            return <PopupMenuEntry>[
              PopupMenuItem(
                child: ListTile(
                  title: Text('Settings'),
                  onTap: () {
                    Navigator.pop(context);
                    Navigator.push(context,
                        MaterialPageRoute(builder: (BuildContext context) 
                      => SettingsPage()
                    ));
                  },
                ),
              ),
            ];
          },
        )
      ],
    ),
    body: _buildBody(context));
}
Run Code Online (Sandbox Code Playgroud)

还有容器

class HomePageContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
 return new StoreConnector<AppState, _ViewModel>(
   converter: _ViewModel.fromStore,
   builder: (BuildContext context, _ViewModel vm) {
     return HomePage(
      user: vm.user,
     );
   },
 );
 }
}
Run Code Online (Sandbox Code Playgroud)

sco*_*017 3

如果您使用设置按钮,则需要在 onTap 中使用三元,或者,如果您只是希望它在应用程序启动时自动将用户发送到正确的页面,则可以将三元放在 MyApp 构建方法中。

如果您正在使用设置按钮,并且只想让它在未登录的情况下弹回到上一页,那么您可以将 NotLoggedIn() 更改为弹出。

由于某种奇怪的原因,当代码正确格式化为四个空格时,SO 拒绝发布代码,完全按照它的要求,所以我只想提出一个要点。

https://gist.github.com/ScottS2017/3288c7e7e9a014430e56dd6be4c259ab