Я работаю в приложении, которое много использует карту Google, мне нужно, чтобы карта Google была одиночной, чтобы ее нельзя было перестроить каждый раз, когда пользователь заходит на страницу. Вот моя попытка для этого, но я обнаружил, что это не работает. Как восстановить карту. это мой класс signleton
class MapSingleton {
static Widget _mapWidget;
static GoogleMapController _mapController;
static final MapSingleton _singleton = MapSingleton._internal();
LatLng _mainLocation = LatLng(24.7167859, 55.2776692);
Set<Marker> _markers = Set();
MapSingleton._internal();
factory MapSingleton() {
return _singleton;
}
// get only one instance of map
Widget get MapWidget {
if (_mapWidget != null) return _mapWidget;
_mapWidget = GoogleMap(
initialCameraPosition: CameraPosition(
target: _mainLocation,
zoom: 13,
),
mapType: MapType.normal,
markers: _markers,
onMapCreated: _onMapCreated,
myLocationButtonEnabled: false,
mapToolbarEnabled: false,
);
return _mapWidget;
}
void _onMapCreated(GoogleMapController controller) async {
_mapController = controller;
}
}
и вот как я его использую
class MapPage extends StatefulWidget {
@override
_MapPageState createState() => _MapPageState();
}
class _MapPageState extends State<MapPage> {
MapSingleton mapSingleton;
@override
void initState() {
super.initState();
mapSingleton = MapSingleton();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: mapSingleton.MapWidget,
),
);
}
}