Приложение отстает при создании Google Maps-Widget - PullRequest
0 голосов
/ 10 января 2019

В моем приложении я хочу иметь возможность открывать страницу с виджетом карт Google внутри, когда нажимаю кнопку на главной странице. Когда я нажимаю кнопку, начинается навигационный переход, но он отстает, потому что он одновременно загружает карту. Есть ли способ «предварительно загрузить» карту перед построением ее в виде дерева или каким-либо образом сделать это асинхронно, чтобы не было задержки?

Я попытался собрать только Контейнер, а затем, после завершения сборки, я вызываю асинхронную функцию, которая создает Map-Widget и вызывает setState (). Это не исправит отставание. Проблема также существует, когда я создаю кнопку и загружаю карту при ее нажатии.

Это код, который я пробовал, упрощенный:

    class GMap ... {

      Widget gMap = Container();

      Widget build(...) {
        return Scaffold(body: gMap);
      }

      void afterFirstLayout(...) { // This is from a class added from Github
        buildMap();
      }

      void buildMap() async {
       setState(() {

          gMap = GoogleMap(...);

        });
      }

    }

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

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

Это также происходит, если я использую пример приложения из пакета flutter_google_maps. Когда страница с картой открыта, возникает задержка.

Я запускаю приложение в режиме релиза на эмуляторе и на моем реальном телефоне. Это происходит на каждом устройстве.

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