我一直在试图找出导致下面描述的行为的原因:
- 我有一个带有许多屏幕的颤振应用程序
- 导航到各个屏幕是使用Route和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
},
)));
}
}
问题是;每次我导航到一个屏幕时,所有其他屏幕都会在后台更新。我知道,因为我设置了控制台打印("我在这里"(;在每个屏幕中。
这是正常行为吗?我确实想要这个,因为它浪费了 CPU 资源。
我希望我有一些关于我做错了什么的线索。
这是
正常行为吗?
是的,默认情况下,路由会添加到以前的路由之上, 并且您通常应该期望随时调用built()
方法。
我确实想要这个,因为它浪费了 CPU 资源。
没有。无论如何,构建方法不应该做太多工作,除了创建小部件实例,昂贵的工作是布局和渲染到 GPU,如果视图没有更改,就不会完成。