【问题标题】:Modifying FAB from inside a nested route while using BottomNavigation Flutter使用 BottomNavigation Flutter 从嵌套路由内部修改 FAB
【发布时间】:2020-07-15 14:47:10
【问题描述】:

我在尝试个性化包含在主页中的 FloatingActionButton 时遇到了问题,因为它使用了 BottomNavigation 的嵌套路由。现在我拥有的是这个小部件树:

如您所见,该应用程序包含一个带有 BottomNavigationBar 的 Scaffold,对于来自该 BottomNavigation 的每个索引,我都有一个新的 Navigator,我可以从中在嵌套路由之间导航。问题是这些导航器中每个嵌套路由的 FAB 配置是不同的,因此我需要知道应该使用哪种策略来更改它的选项,更具体地说是图标和 onPress 方法

解决方案:

最后我想到了一个足够简单的解决方案,不知道是不是更合适,但它确实工作得很好。

基本上我所做的是创建一个提供程序,在该提供程序中,我将有一个包含每条路由的 FAB 函数的列表,并在当前显示的那个函数被相应地调用。

【问题讨论】:

    标签: flutter dart flutter-layout floating-action-button


    【解决方案1】:

    您可以使您的AppScreen 成为有状态小部件,在该状态中创建一个int _currentIndex = 0,然后单击任何BottomNavigationBarItems 后,您可以调用setState 更改_currentIndex

    然后,在您的 build 方法中,您可以执行以下操作:

    Widget fabChild;
    VoidCallback fabOnPressed;
    if (_currentIndex == 0) {
      fabChild = ...
      fabOnPressed = ...
    } else if (_currentIndex == 2) {
      // (...)
    }
    
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: fabChild,
        onPressed: fabOnPressed,
      ),
    );
    

    【讨论】:

    • 我确实做到了,它解决了导航器根屏幕的问题。但是其他路线呢?
    猜你喜欢
    • 2019-10-18
    • 2020-11-22
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多