location.getLocation() занимает слишком много времени и показывает ошибку. Куда я помещаю будущее.задерживается?

#flutter #google-maps #location #flutter-dependencies

#flutter #google-maps #location #flutter-dependencies

Вопрос:

В настоящее время я пытаюсь получить текущее местоположение устройства и отобразить его на картах Google. Однако во время моего первого запуска и всякий раз, когда я перезагружаюсь, я продолжаю получать ошибку «LateInitializationError: поле» Текущее местоположение » не было инициализировано.». Но когда я попытался перезагрузить приложение, на карте появилась правильная информация. Может ли кто-нибудь объяснить, почему это происходит и как это исправить?

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

Вот мой код:

 import 'dart:async';  import 'package:flutter/material.dart'; import 'package:location/location.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:travellert/maps/pin_pill_info.dart';  const double CAMERA_ZOOM = 18; const LatLng SOURCE_LOCATION = LatLng(42.747932, -71.167889);  class GoogleMapPage extends StatefulWidget {  const GoogleMapPage({Key? key}) : super(key: key);   @override  _GoogleMapPageState createState() =gt; _GoogleMapPageState(); }  class _GoogleMapPageState extends Statelt;GoogleMapPagegt; {  final Completerlt;GoogleMapControllergt; _controller = Completer();   late LocationData currentLocation;  late Location location;  late MarkerId markerId1;  late Marker marker1;  final Setlt;Markergt; _markers = lt;Markergt;{};   late PinInformation sourcePinInfo;  @override  void initState() {  super.initState();   location = Location();   location.onLocationChanged.listen((LocationData cLoc) {  currentLocation = cLoc;  updatePinOnMap();  });   setInitialLocation();  }   void setInitialLocation() async {  currentLocation = await location.getLocation();  }   @override  Widget build(BuildContext context) {  CameraPosition initialCameraPosition = const CameraPosition(  target: SOURCE_LOCATION,  zoom: CAMERA_ZOOM,  );  if (currentLocation != null) {  initialCameraPosition = CameraPosition(  target: LatLng(currentLocation.latitude!, currentLocation.longitude!),  zoom: CAMERA_ZOOM,  );  }   return Scaffold(  body: GoogleMap(  myLocationEnabled: true,  compassEnabled: true,  tiltGesturesEnabled: false,  mapType: MapType.normal,  initialCameraPosition: initialCameraPosition,  onMapCreated: (GoogleMapController controller) {  _controller.complete(controller);  showPinsOnMap();  }));  }   void showPinsOnMap() {  var pinPosition =  LatLng(currentLocation.latitude!, currentLocation.longitude!);   sourcePinInfo = PinInformation(  locationName: "Start Location",  location: SOURCE_LOCATION,  );   _markers.add(Marker(  markerId: const MarkerId('sourcePin'),  position: pinPosition,  ));  }   void updatePinOnMap() async {  CameraPosition cPosition = CameraPosition(  zoom: CAMERA_ZOOM,  target: LatLng(currentLocation.latitude!, currentLocation.longitude!));   final GoogleMapController controller = await _controller.future;  controller.animateCamera(CameraUpdate.newCameraPosition(cPosition));   setState(() {  var pinPosition =  LatLng(currentLocation.latitude!, currentLocation.longitude!);   sourcePinInfo.location = pinPosition;   _markers.removeWhere((m) =gt; m.markerId.value == 'sourcePin');  _markers.add(  Marker(markerId: const MarkerId('sourcePin'), position: pinPosition));  });  } }  

Вот скриншоты: ошибка Карта