Я использую Google Maps для флаттера виджет.
В моем приложении карта отображается через одну из вкладок BottomNavigationBar.
А у меня следующая проблема:
- пользователь на вкладке Карты
- пользователь меняет вкладку (нажав на другую)
- [ПРОБЛЕМА], когда пользователь возвращается на вкладку карты, перерисовывает карту.
Я хотел бы сохранить карту такой, какая она есть, когда пользователь покидает вкладку Карты, чтобы он мог продолжать работать с ней, когда вернется к ней позже.
Пытался:
- использовать PageStorage - безуспешно.
- сделать что-то вроде состояния Singletone of Map - без успеха.
- использовать AutomaticKeepAliveClientMixin ( видел здесь ), что выглядело многообещающе, но все еще безуспешно.
(Я признаю, что мог сделать что-то не так)
Код последней попытки:
class MapScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() => MapScreenState();
}
class MapScreenState extends State<MapScreen> with AutomaticKeepAliveClientMixin {
GoogleMapController mapController;
@override
bool get wantKeepAlive => true;
@override
Widget build(BuildContext context) {
super.build(context);
return Scaffold(
appBar: AppBar(
title: const Text("Map"),
),
body: GoogleMap(
onMapCreated: _onMapCreated,
)
);
}
void _onMapCreated(GoogleMapController controller) {
mapController = controller;
updateKeepAlive();
}
}
Итак, мне просто нужен способ сохранить MapScreen живым и неизменным или как-то сохранить его состояние и восстановить его, когда пользователь вернется в MapScreen. Или что-то еще, что решит проблему.