Я столкнулся с ошибкой приведения в моем приложении, где на 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
, как и раньше.
Спасибо за любую помощь.