以下代码几乎是官方flutter github示例中底部导航栏的复制粘贴。问题是,在包含视图的小部件的打开处,所有内容都已预加载。每次按下底部栏元素时,都会重新加载所有视图。换句话说,当我按第一个项目时,日志显示出其他(第二个和第三个)正在拨打网络电话。当我按下第二个按钮时,日志显示我什至第一个正在拨打网络电话。调试时,我发现每次都从底部栏中选择一个小部件,包含它的小部件会重新构建(有一个对方法buid的调用)。这是正常现象吗?这是包含小部件的代码
class MainScreen extends StatefulWidget{
@override
State<StatefulWidget> createState()=> MainScreenState();
}
class MainScreenState extends State<MainScreen> with TickerProviderStateMixin{
GlobalKey<ScaffoldState> scaffoldState = new GlobalKey();
int _currentSelection = 0;
BottomNavigationBarType _navigationBarType = BottomNavigationBarType.fixed;
Li
st<NavigationIconView> _navigationIcons;
@override
void initState() {
super.initState();
_navigationIcons = <NavigationIconView>[
new NavigationIconView(
icon: const Icon(Icons.home),
title: '???????',
vsync: this
),
new NavigationIconView(
icon: const Icon(Icons.map),
title: '??????',
vsync: this
),
new NavigationIconView(
icon: const Icon(Icons.dehaze),
title: '???????',
vsync: this
)
];
for(NavigationIconView v in _navigationIcons)
v.controller.addListener(_rebuild);
_navigationIcons[_currentSelection].controller.value = 1.0; …Run Code Online (Sandbox Code Playgroud) flutter ×1