下面代码中为什么从另一个页面传值过来后,当前页面的底部导航栏就不能切换了 class TarbarPage extends StatefulWidget { final int index; final int flag; const TarbarPage({Key? key, required this.index, required this.flag}) : super(key: key); @override State<StatefulWidget> createState() => _TarbarPageState(newIndex: index, newFlag: flag); } @override class _TarbarPageState extends State { int newIndex; int newFlag; _TarbarPageState({required this.newIndex, required this.newFlag}); int _currentIndex = 0; //底部导航栏当前索引 @override Widget build(BuildContext context) { print('newItem$newIndex'); print('newItem$newFlag'); final _tabPages = [ const HomePage(), StudyPage( index: newIndex, ), const FantasticStoryPage(), const SetUpPage() ]; setState(() { _currentIndex = newFlag; }); print('____$_currentIndex'); return Scaffold( body: _tabPages[_currentIndex], bottomNavigationBar: BottomNavigationBar( currentIndex: _currentIndex, onTap: (flag) { print('idnex$flag'); setState(() { _currentIndex = flag; }); String? currentPageRoute = ModalRoute.of(context)?.settings.name; print('Third page route: $currentPageRoute'); }, type: BottomNavigationBarType.fixed, items: const [ BottomNavigationBarItem( icon: Icon(Icons.home), label: ('首页'), ), BottomNavigationBarItem( icon: Icon(Icons.school), label: ('学习'), ), BottomNavigationBarItem( icon: Icon(Icons.local_library), label: ('奇闻'), ), BottomNavigationBarItem( icon: Icon(Icons.settings), label: ('设置'), ), ]), ); } }
时间: 2024-02-14 15:34:12 浏览: 75
Android实现简单底部导航栏 Android仿微信滑动切换效果
从代码中看,底部导航栏的切换是通过 `_currentIndex` 变量控制的。根据你提供的代码,我没有看到从其他页面传值过来的逻辑。但是,如果你在其他页面传值给 `TarbarPage` 时没有同时更新 `newIndex` 和 `newFlag` 的值,那么 `_currentIndex` 的值将不会改变,导致底部导航栏不能切换。
你可以检查一下从其他页面传值给 `TarbarPage` 的逻辑是否正确,并确保在传值时更新 `newIndex` 和 `newFlag` 的值。另外,你也可以在 `build` 方法中打印一些调试信息,观察 `newIndex`、`newFlag` 和 `_currentIndex` 的值是否正确。
如果你能提供更多关于传值的逻辑和其他页面的代码,我可以帮你更好地分析问题所在。
阅读全文