Android -only Ошибка приведения флаттера в службе определения местоположения location.getlocation () - PullRequest
0 голосов
/ 08 мая 2020

Я столкнулся с ошибкой приведения в моем приложении, где на iOS нет проблем, а на Android ошибка возникает каждый раз, когда выполняется моя функция ниже и когда виджет отрисовывается.

У меня есть простой файл модели местоположения пользователя:

class UserLocation {
  final double latitude;
  final double longitude;
  UserLocation({this.latitude, this.longitude});
}

Он импортирован в мой файл класса LocationService, который использует плагин Google Location:

import 'package:location/location.dart';
import 'package:MyApp/models/user_location.dart';
import 'dart:async';

class LocationService {   
    UserLocation _currentLocation;
    var location = Location();
    Future<UserLocation> getLocation() async {
        try {
          var userLocation = await location.getLocation();
          _currentLocation = UserLocation(
              latitude: userLocation.latitude,
              longitude: userLocation.longitude,
             );
           } on Exception catch (e) {
            print('Could not get location: ${e.toString()}');
          }
        return _currentLocation;
      }   
    //... userlocation stream set up here...
 }

Затем я вызываю его в функции Я вызываю в своем setState, так как это устанавливает местоположение, используемое в Streambuilder:

  Future<void> _startQuery() async {
    UserLocation position = await LocationService().getLocation();
    Hive.openBox('hidden');
    setState(() {
      pos = position;
      globalpos = position;
      Hive.openBox('hidden');
    });

  }

После запуска приложения я получаю следующую ошибку, сначала в моем классе LocationService, а затем, когда я перехожу ошибку в моем _startQuery (), в частности в строках var userLocation = await location.getLocation(); и UserLocation position = await LocationService().getLocation();, где .getLocation() вызывается на обоих:

Произошло исключение.

NoSuchMethodError (NoSuchMethodError: Class ' int 'не имеет метода экземпляра' cast '.

Получатель: 1

Пробный вызов: cast ())

Здесь был задан аналогичный вопрос, но я не могу получить то же решение для работы или непосредственного применения: location.getlocation () дает ошибку литья на android flutter

Когда я пытался сделать это и использовать блок if для проверки разрешения, я просто получаю сообщение об ошибке в том же самом месте, поэтому кажется, что проверка if прошла успешно, а затем она терпит неудачу при вызове .location, как и раньше.

Спасибо за любую помощь.

...