Flutter / Dart - Navigator.pop (context) перестал работать после добавления BottomNavigationBar - PullRequest
0 голосов
/ 05 августа 2020

Первая страница в моем стеке имеет BottomNavigationBar. Первая вкладка вызывает FutureBuilder, который возвращает PageView.builder. Проведение по нему приводит к переходу на страницу 2.

Раньше нажатие Navigator.pop(context) на второй странице возвращало меня на страницу One. Но после добавления BottomNavigationBar на страницу 2 кнопка больше не возвращается. Вместо этого я получаю черный экран.

Почему добавление BottomNavigationBar на страницу 2 останавливает его возвращение на страницу 1?

Любопытно, но с помощью обычной кнопки Android назад на моем телефон ДЕЙСТВИТЕЛЬНО работает. Разве использование Navigator.pop(context) не должно быть таким же, как использование кнопки возврата на телефоне Android? Если нет, как я могу заставить мою кнопку вести себя так же, как кнопка возврата Android?

Вот код для второй страницы;

class HomeReply extends StatefulWidget {

  @override
  _HomeReplyState createState() => new _HomeReplyState();
}

class _HomeReplyState extends State<HomeReply> {

  @override
  void initState() {
    super.initState();
  }

  static List<Widget> _myPages = <Widget>[
    ReplyStage(),
    Account(),
  ];
  
  int _selectedIndex = 0;

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

  @override
  Widget build(BuildContext context) {
    var socialProvider = Provider.of<SocialProvider>(context);
    return MaterialApp(
      home: FutureBuilder(
      future: Future.wait([socialProvider.loadCurrentName(), socialProvider.loadCurrentAvatar()]),
      builder: (context, snapshot) {
      if (snapshot.hasData) {
      return
      Scaffold(
        appBar: AppBar(
          title: Text(
            "Back to "Original Post",
            ),

          leading: new IconButton(
            icon: new Icon(
              Icons.arrow_back,             
            ),
            onPressed: () {
              Navigator.pop(context);
            },
          ),
          ),
        body: _myPages[_selectedIndex],
        bottomNavigationBar: BottomNavigationBar(
          type: BottomNavigationBarType.fixed,
          items: <BottomNavigationBarItem>[
            BottomNavigationBarItem(
              icon: Icon(
                Icons.home,
              ),
              title: Text('Home'),
            ),
            BottomNavigationBarItem(
              icon: Consumer<SocialProvider>(
                  builder: (context, socialProvider, child) {
                    return Image.network(snapshot.data[1],
                    );
                  }),
              title: Consumer<SocialProvider>(
                  builder: (context, socialProvider, child) {
                    return Text(snapshot.data[0]);
                  }
              ),
            ),
          ],
          currentIndex: _selectedIndex,
          onTap: _onItemTapped,
         ),
      );
    } else if(snapshot.hasError) {
    return Center(child: CircularProgressIndicator());
    } else{
    return Center(child: CircularProgressIndicator());
    }
    }
      ),
    );
  }
}

1 Ответ

0 голосов
/ 05 августа 2020

Кажется, проблема не в BottomNavigationBar. Проблема была в дублированном MaterialApp здесь:

return MaterialApp(
      home: FutureBuilder

Как только я изменил это на return FutureBuilder, Navigator.pop(context) вернулся к нормальной работе.

...