flutter通过每隔一个屏幕的路由更新导航到其他屏幕

时间:2018-06-18 06:59:31

标签: navigation flutter

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

  1. 我有一个有很多屏幕的扑翼应用程序
  2. 导航到各种屏幕是使用Rouigator.pushNamed(上下文," / XX")的路由和抽屉实现的。
  3. 以下是路由:

    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
    
    
          },
    
        )));
      }
    
    }
    

    问题是;每次我导航到一个屏幕,所有其他屏幕更新在后台。我知道因为我设置了控制台打印(&#34;我在这里&#34;);在每个屏幕上。

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

    我希望我有一些关于我做错的线索。

1 个答案:

答案 0 :(得分:0)

  

这是正常行为吗?

是,默认情况下,路线会添加到以前的路线之上, 并且您通常希望随时调用built()方法。

  

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

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