【问题标题】:Flutter - How to push to other Route without user interaction (like onTap)?Flutter - 如何在没有用户交互的情况下推送到其他路由(如 onTap)?
【发布时间】:2019-04-01 23:10:58
【问题描述】:

我是一名 iOS 开发人员,现在正在试用 Flutter。

作为标题,我想要实现的是让一个类像“经理”一样,在应用程序启动时控制我的页面路由。

例如在 iOS 中,我可以检查 AppDelegate (didFinishedLaunchingWithOptions) / ViewController (ViewDidLoad/Appear) 中的“Bool”并更改 rootViewController 或推送到所需的 ViewController 取决于“Bool”,例如“isLogin”而是推送到 LoginViewController / LoggedViewController。

我知道我可以对用户交互进行 Push,例如监听 IconButton 的 onTap。但我不知道如何“自动”做到这一点。

据我所知,Flutter 中的 'build(context)' 与 iOS 中的 'viewDidLoad' 类似,但它是专门针对 UI 的,那么我可以将逻辑放在哪里?

【问题讨论】:

  • 您可以根据“initState”中的布尔值触发函数。在创建“StatefulWidget”时,可以调用“initState”,就像flutter中的viewDidLoad。
  • @Daibaku 谢谢你的回答。我尝试直接在“initState”中调用“Navigator.of(context).push”,错误爆棚。
  • @Daibaku 你能提供一个工作示例,显示应用启动时通过布尔值自动推送到不同的 StatefulWidget 吗?

标签: ios dart flutter flutter-layout


【解决方案1】:

InitState()中调用Navigator.push的一种方式:

@override
  void initState() {
    super.initState();
    if(condition){
      WidgetsBinding.instance.addPostFrameCallback((_) async {
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (BuildContext context) => NextPage()
            )
        );
      });
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多