В моем приложении я хочу иметь возможность открывать страницу с виджетом карт 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. Когда страница с картой открыта, возникает задержка.
Я запускаю приложение в режиме релиза на эмуляторе и на моем реальном телефоне. Это происходит на каждом устройстве.