【问题标题】:flutter Navigate to other screen via Routing updates every other screen颤振通过路由导航到其他屏幕每隔一个屏幕更新一次
【发布时间】:2018-11-26 23:37:36
【问题描述】:

我一直在试图找出导致下述行为的原因:

  1. 我有一个多屏 Flutter 应用
  2. 使用 Routes 和一个 Drawer 实现对各个屏幕的导航,该 Drawer 向它们提供 Navigator.pushNamed(context, "/XX")。

这里是这样的路由:

Routes() {
   runApp( new StateContainer(child:
      new MaterialApp(
      title: "My App",
      debugShowCheckedModeBanner: false,
      theme: new ThemeData(
        primaryColor: defaultTargetPlatform == TargetPlatform.iOS
        ? Colors.blueGrey[900] : Colors.blueGrey[900],
        accentColor: defaultTargetPlatform == TargetPlatform.iOS
        ? Colors.grey[900] : Colors.grey[900],
        ),
      home: new LoginScreen(),

      routes: <String, WidgetBuilder> { //5
        '/login': (BuildContext context) => new LoginScreen(), //LoginScreen
        '/signup' : (BuildContext context) => new SignupScreen(), // SignupScreen
        '/home': (BuildContext context) => new HomeScreen(), //HomeScreen


      },

    )));
  }

}

问题是;每次我导航到一个屏幕时,所有其他屏幕都会在后台更新。我知道是因为我设置了控制台 print("I am here");在每个屏幕中。

这是正常行为吗?我确实想要这个,因为它浪费了 CPU 资源。

我希望我对我做错了什么有一些线索。

【问题讨论】:

    标签: navigation flutter


    【解决方案1】:

    这是正常行为吗?

    是的,路由默认添加在之前的路由之上, 并且您通常应该期望随时调用 built() 方法。

    我确实想要这个,因为它浪费了 CPU 资源。

    不是真的。除了创建小部件实例之外,构建方法不应该做太多工作,而且昂贵的工作是布局和渲染到 GPU,如果视图没有更改,则不会完成。

    【讨论】:

    • 我正在另一个屏幕中获取数据,我注意到每次导航到另一个屏幕时,数据获取正在执行....
    • 如果您将数据保存在一个变量中,您可以轻松检查数据是否已被提取,并在数据可用时跳过提取。
    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 2021-10-25
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多