Восстановите ту же вкладку с помощью Flutter BottomNavigationBar

У меня проблема с Flutter BottomNavigationBar. я построил BottomNavigationBar с 3 элементами, полный код

class TabPage extends StatefulWidget {
  @override
  _TabPageState createState() => _TabPageState();
}

class _TabPageState extends State<TabPage> {
  int _currentIndex = 0;

  final Map<int, Widget> _routes = <int, Widget>{
    0: MainTab(),
    1: NotificationTab(),
    2: BlocProvider(
      create: (context) => ProfileBloc(DataProvider()),
      child: ProfileTab(),
    ),
  };

  void _onTabTapped(int index) {
    setState(() {
      _currentIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: BottomNavigationBar(
        showUnselectedLabels: false,
        currentIndex: _currentIndex,
        type: BottomNavigationBarType.fixed,
        onTap: _onTabTapped,
        items: [
          BottomNavigationBarItem(
            icon: Icon(
              Icons.language,
            ),
            label: AppLocalizations.of(context).translate("home"),
          ),
          BottomNavigationBarItem(
            icon: Icon(
              Icons.notifications,
            ),
            label: AppLocalizations.of(context).translate("notification"),
          ),
          BottomNavigationBarItem(
            icon: Icon(
              Icons.person,
            ),
            label: AppLocalizations.of(context).translate("profile"),
          )
        ],
      ),
      body: _routes[_currentIndex],
    );
  }
}

Все работает нормально, если я переключаюсь с вкладки на другую, проблема в том, что вкладка не перезагружается, если пользователь нажимает на текущую выбранную вкладку. Первая вкладка - это виджет с WebView, поэтому я хочу, чтобы пользователь вернулся к initialUrl, даже если он уже находится на этой вкладке. Кажется, что нажатие на текущую выбранную вкладку не имеет никакого эффекта. Есть ли способ восстановить дочерний виджет?

class MainTab extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: WebView(
        initialUrl: "https://www.google.com/",
        javascriptMode: JavascriptMode.unrestricted,
      ),
    );
  }
}

person Bux    schedule 21.10.2020    source источник
comment
Добавьте ключевой параметр в любую вкладку, которую вы хотите перестроить в _routes. Предоставьте ему уникальный ключ. Это будет восстанавливать его каждый раз.   -  person UTKARSH Sharma    schedule 22.10.2020
comment
Не могли бы вы опубликовать пример, пожалуйста?   -  person Bux    schedule 22.10.2020