我正在尝试同时实现一个抽屉和底部导航栏。下面的类NavigationHomeScreen是我的主屏幕,当用户单击抽屉中的菜单项时,Changeindex函数将更新screenView
,但我想知道如何从{{ 1}}使用screenView
方法。
BottomNavigationBarApp
onTabTapped
答案 0 :(得分:1)
您可以将对函数的引用向下传递到小部件。像这样:
在主屏幕中:
void updateScreenView() {
//Do changes you want here. Dont forget to setState!
}
在您的BottomNavigationBarApp中:
final int bottomNavigationBarIndex;
final BuildContext context;
final function tapHandler;
const BottomNavigationBarApp(this. context, this.bottomNavigationBarIndex, this.tapHandler);
然后将引用传递给:
bottomNavigationBar:BottomNavigationBarApp(context, 1, updateScreenView),
并将函数分配给您的处理程序。
onTap: () => tapHandler(),
答案 1 :(得分:0)
最好的方法也是 Flutter 开发团队推荐的方法是使用 Flutter 中的 provider package
来管理这些小部件之间的状态。
如果它的应用程序很小,最佳答案确实可以解决您的问题,但是随着应用程序的增长,您很可能希望在小部件树上进行更改,这使得功能变得不切实际。