Запомните состояние нижней навигационной панели при возврате страницы - PullRequest
2 голосов
/ 22 октября 2019

В main_activity.dart имеется 4 нижние панели навигации с именами A, B, C и D.

main_activity.dart

class MainPage extends StatefulWidget {
  static const ROUTE = '/mainPage';

  @override
  State<StatefulWidget> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  int _selectedIndex = 2;
  final _tabs = [
    A(),
    B(),
    C(),
    D(),
  ];

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      child: Scaffold(
        body: _tabs[_selectedIndex],
        bottomNavigationBar: BottomNavigationBar(
          type: BottomNavigationBarType.fixed,
          currentIndex: _selectedIndex,
          items: [
           ...
          ],
          onTap: (index) => setState(() {
            _selectedIndex = index;
          }),
        ),
      ),
       onWillPop: () => _requestPop(context),
    );
  }
}

Первоначально этооткроет страницу на вкладке C. Когда я нажму на вкладку B, она покажет страницу B, которая содержит плавающую кнопку действия. При нажатии кнопки с плавающим действием она вызовет add_B.dart. Моя проблема заключается в том, что когда я нажимаю кнопку «Назад» в add_B.dart, он возвращается к main_activity и открывает вкладку С. Как мне сделать так, чтобы вместо этого открывалась вкладка B?

add_B.dart

onWillPop: (){
        _backToPreviousPage(context);
      },

 void _backToPreviousPage(BuildContext context) {
    Navigator.of(context).pushReplacementNamed(MainPage.ROUTE);
  }

1 Ответ

2 голосов
/ 22 октября 2019

Вы можете создать global.dart файл и в нем объявить int _selectedIndex = 2; и импортировать файл всякий раз, когда вы его используете, если для _selectedIndex установлено определенное значение, значение сохраняется вместе с вами по всему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...