【发布时间】:2020-06-29 00:28:39
【问题描述】:
当我升级包时,我得到这个错误 " lib/location_helper.dart:43:23: 错误:'PermissionStatus' 类型的值不能分配给'bool' 类型的变量。 - “PermissionStatus”来自“package:location/location.dart”(“/D:/flutter/.pub-cache/hosted/pub.dartlang.org/location-2.5.3/lib/location.dart”)。 _permission = 等待 _locationService.requestPermission(); ^ 目标 kernel_snapshot 失败:异常:快照创建期间出错:null 构建失败。 "
location_helper
import 'package:location/location.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'dart:async';
import 'package:flutter/services.dart';
class LocationHelper {
///init as singleton
static LocationHelper _locationHelper;
static LocationHelper instance() {
if (_locationHelper == null) {
_locationHelper = LocationHelper._();
}
return _locationHelper;
}
LocationHelper._();
LocationData _startLocation;
LocationData _currentLocation;
StreamSubscription<LocationData> _locationSubscription;
Location _locationService = new Location();
bool _permission = false;
String error;
Completer<GoogleMapController> _controller = Completer();
static final CameraPosition _initialCamera = CameraPosition(
target: LatLng(0, 0),
zoom: 4,
);
CameraPosition _currentCameraPosition;
Future<void> _initPlatformState() async {
await _locationService.changeSettings(
accuracy: LocationAccuracy.HIGH, interval: 1000);
LocationData location;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
bool serviceStatus = await _locationService.serviceEnabled();
print("Service status: $serviceStatus");
if (serviceStatus) {
_permission = await _locationService.requestPermission();
print("Permission: $_permission");
if (_permission) {
location = await _locationService.getLocation();
_locationSubscription = _locationService
.onLocationChanged()
.listen((LocationData result) async {
_currentCameraPosition = CameraPosition(
target: LatLng(result.latitude, result.longitude), zoom: 16);
final GoogleMapController controller = await _controller.future;
controller.animateCamera(
CameraUpdate.newCameraPosition(_currentCameraPosition));
_currentLocation = result;
});
}
} else {
bool serviceStatusResult = await _locationService.requestService();
print("Service status activated after request: $serviceStatusResult");
if (serviceStatusResult) {
_initPlatformState();
}
}
} on PlatformException catch (e) {
print(e);
if (e.code == 'PERMISSION_DENIED') {
error = e.message;
} else if (e.code == 'SERVICE_STATUS_ERROR') {
error = e.message;
}
location = null;
}
_startLocation = location;
}
Future<LocationData> getCoordinates() async {
await _initPlatformState();
return _startLocation;
}
Future<String> getCoordinatesAsString() async {
await _initPlatformState();
return '${_startLocation.latitude}' + ',' + '${_startLocation.longitude}';
}
}
【问题讨论】: