首页 > 解决方案 > Flutter:从 FloatingActionButton 重新构建小部件

问题描述

我有一个Scaffold带有BottomNavigationBar. 根据栏中单击的图标,我正在切换body脚手架。在某些情况下,我想显示一个FloatingActionButton. getFloatingActionButton该按钮由我为各个小部件实现的静态方法检索(请参阅下面的代码摘录部分)。

问题

该按钮应推动具有用于创建条目的表单的 Scaffold(我们称之为 add-reminder-scaffold)。以提醒为例。问题是,一旦弹出“添加提醒脚手架”,显示提醒列表的底层小部件就不会重建。因此我没有看到最新的条目。

我尝试使用提供者在保存表单并弹出“添加提醒脚手架”并且底层“提醒列表小部件”收听此内容后通知其听众。不工作。我尝试将其放入FloatingActionButton提供者提供的变量中,并让根脚手架监听更改。也不行。

我总是遇到一些例外情况,例如setState()在不适当的情况下调用或无法正确使用提供程序。

这样做的正确方法是什么?

代码摘录

主脚手架是这样构建的:

void _onItemTapped(int index) {
  setState(() {
    _selectedIndex = index;

    if (_selectedIndex == 2) {
      _floatingButton = LogScreen.getFloatingActionButton(context);
    } else if (_selectedIndex == 3) {
      _floatingButton = ReminderOverviewScaffold.getFloatingActionButton(context);
    } else {
      _floatingButton = null;
    }
  });
}

…

@override
Widget build(BuildContext context) {
    return Scaffold(
        appBar: …,
        body: _widgetOptions.elementAt(_selectedIndex),
        floatingActionButton: _floatingButton,
        bottomNavigationBar: _getBottomNavBar(context));
}

标签: flutterfloating-action-buttonflutter-providerflutter-bottomnavigation

解决方案


推荐阅读