如何解决无需一次加载所有页面的BottomNavigationBar
我有一个带有 BottomNavigationBar 和 IndexedStack 的屏幕,它根据底部栏索引交换子视图。
一切正常,除了所有四个页面都是同时创建的,加载它们的数据非常繁重,并且会降低应用程序的速度。
是否有设置允许我仅在点击相应选项卡时加载每个页面?
解决方法
我建议删除 IndexedStack
并制作小部件列表并根据索引呈现数据。
List<Widget> _pages = [Home(),Business(),School()];
在底部导航容器小部件上创建 Provider/Bloc 实例
return MultiProvider(
providers [
Provider<Something>(create: (_) => Something()),],child :Scaffold(
appBar: AppBar(
title: const Text('BottomNavigationBar Sample'),),body: _pages[_selectedIndex],bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),label: 'Home',BottomNavigationBarItem(
icon: Icon(Icons.business),label: 'Business',BottomNavigationBarItem(
icon: Icon(Icons.school),label: 'School',currentIndex: _selectedIndex,selectedItemColor: Colors.amber[800],onTap: _onItemTapped,)
)
在每个页面绑定provider的consumer,调用provider中的api
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。