问题描述
我有一个小部件,我想重新创建状态,我该怎么做才能实现这一目标?我听说 UniqueKey
有一种方法,但我对它们不太了解,因为我是初学者(别担心,我已经搜索过了)
到目前为止我尝试的是pop
Navigator
然后再次push
同一页面......它有效......但问题是我失去了BottomNavigationBar
当我的页面退出状态时这样做...
这是我目前解决这个问题的方法
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.inactive ||
state == AppLifecycleState.paused) {
Navigator.pop(context);
Navigator.push(
context,MaterialPageRoute(builder: (context) => Home()));
}
super.didChangeAppLifecycleState(state);
}
BottomNavigationBar
int _selectedItem = 0;
PageController pageController;
void _onPageChanged(int pageIndex) {
setState(() {
_selectedItem = pageIndex;
});
}
void _onTapped(int pageIndex) {
setState(() {
_selectedItem = pageIndex;
});
pageController.jumpToPage(pageIndex);
}
@override
void initState() {
pageController = PageController();
super.initState();
}
@override
void dispose() {
pageController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
controller: pageController,children: pages,onPageChanged: _onPageChanged,),bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,items: bottomNavigationBarItems(context),// You can find this below
currentIndex: _selectedItem,onTap: _onTapped,);
}
}
bottomNavigationBarItems
List<BottomNavigationBarItem> bottomNavigationBarItems(BuildContext context) {
final AppLocalization translate = AppLocalization.of(context);
final BottomNavigationBarItem homePage = BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.home),label: translate.translate('home'),);
final BottomNavigationBarItem newsPage = BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.newspaper),label: translate.translate('news'),);
final BottomNavigationBarItem programsPage = BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.tv),label: translate.translate('programs'),);
return [
homePage,newsPage,programsPage,];
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)