Проблема с прокруткой виджета GoogleMap в BottomNaviationBar с PageView для сохранения состояния

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        children: _children,
        controller: pageController,
        onPageChanged: onPageChanged,
      ),
      bottomNavigationBar: BottomNavigationBar(
        onTap: onTabTapped,
        backgroundColor: Colors.grey[100],
        currentIndex: _currentIndex,
        items: [
          BottomNavigationBarItem(
            icon: new Icon(Icons.navigation),
            label: 'Track',
          ),
          BottomNavigationBarItem(
            icon: new Icon(Icons.settings),
            label: 'Settings',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'Profile',
          )
        ],
      ),
    );
  }

  void onTabTapped(int value) {
    pageController.jumpToPage(value);
  }

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

Привет, я прикрепил свой метод сборки моего виджета с отслеживанием состояния моего простого приложения flutter к изображению кода ниже. Я использую нижнюю панель навигации и хочу, чтобы мои виджеты оставались в дереве при переключении между нижними страницами. Таким образом, я реализовал AutomaticKeepAliveMixin вместе с контроллером страницы и телом страницы, чтобы состояния сохранялись. теперь моя проблема,

  1. Моя первая страница - это виджет карт Google, который показывает информацию для отслеживания. Из-за просмотра страницы, когда я пытаюсь посмотреть на другое место на карте, проводя пальцем в направлении пункта назначения, иногда смахивание справа налево на карте приводит к тому, что просмотр страницы запускает переключение страницы.
  2. Если я удалю просмотр страницы, чтобы карта работала должным образом, сохранение состояний исчезнет, ​​потому что, согласно документации, у меня должно быть тело моего каркаса, заключенного в виджет PageView для работы AutomaticKeepAliveMixin.

Снимок экрана моего приложения

Теперь мой вопрос: как мне добиться того, что делает и то, и другое? Я застрял. Я попытался реализовать другие методы сохранения состояния, такие как индексированный стек и pagekeystorage, но безуспешно :( Любая помощь приветствуется! Спасибо!

Вертикальная прокрутка работает, но когда я пытаюсь прокрутить карту вбок, просмотр страницы имеет приоритет и просто прокручивается на новую страницу следующим образом: Выдать GIF


person Akash Deodhar    schedule 25.12.2020    source источник
comment
Не размещайте код как изображение, используйте форматирование кода. Это упрощает тестирование вашего кода. просто вставьте его в блок `` дротик ''   -  person Maritn Ge    schedule 25.12.2020
comment
Японял твою точку зрения. Я сделал это сейчас блоком кода. Я также добавил гифку, чтобы точно передать мою проблему.   -  person Akash Deodhar    schedule 25.12.2020
comment
Идеально! Надеюсь, это скоро решится.   -  person Maritn Ge    schedule 25.12.2020
comment
Похоже на дубликат stackoverflow.com/questions/49439047/   -  person spkersten    schedule 25.12.2020
comment
@spkersten Нет, сэр, это не моя проблема, я уже могу сохранять состояние без проблем. Моя проблема в том, как работать с картой Google как с виджетом, встроенным в просмотр страницы как виджет.   -  person Akash Deodhar    schedule 26.12.2020


Ответы (1)


PageView имеет физическое свойство, которое вы можете использовать для управления его прокруткой в ​​ответ на смахивание по нему пользователем. Если вы назначите NeverScrollableScrollPhysics (), его нельзя будет прокручивать.

person spkersten    schedule 25.12.2020
comment
Спасибо. Я очень ценю вашу помощь! :) - person Akash Deodhar; 26.12.2020