Flutter-如何从另一个小部件内部更改状态

时间:2020-05-22 14:51:17

标签: flutter dart flutter-layout

我正在尝试同时实现一个抽屉和底部导航栏。下面的类NavigationHomeScreen是我的主屏幕,当用户单击抽屉中的菜单项时,Changeindex函数将更新screenView,但我想知道如何从{{ 1}}使用screenView方法。

BottomNavigationBarApp
onTabTapped

2 个答案:

答案 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 来管理这些小部件之间的状态。

如果它的应用程序很小,最佳答案确实可以解决您的问题,但是随着应用程序的增长,您很可能希望在小部件树上进行更改,这使得功能变得不切实际。