Синглтон гугл карта флаттер - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю в приложении, которое много использует карту 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,
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...