面试题答案
一键面试- 配置项目:
- iOS方面:在
ios
目录下的Runner.xcworkspace
文件中打开项目。在Info.plist
文件里添加定位权限相关描述,例如添加NSLocationWhenInUseUsageDescription
(使用应用期间的定位权限描述)和NSLocationAlwaysAndWhenInUseUsageDescription
(始终允许定位权限描述,适用于iOS 14及以上),并填写相应的提示信息,告知用户应用使用定位的目的。
- iOS方面:在
- 使用插件:
- 推荐使用
location_permissions
插件来处理权限相关操作,以及flutter_blue_plus
插件(若定位与蓝牙相关结合场景)等。对于纯定位功能,location
插件是常用的。在pubspec.yaml
文件中添加依赖:
- 推荐使用
dependencies:
location: ^4.4.0
然后运行flutter pub get
安装插件。
3. 调用方法:
- 权限请求:
import 'package:location/location.dart';
Location location = Location();
bool _serviceEnabled;
PermissionStatus _permissionGranted;
_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
_serviceEnabled = await location.requestService();
if (!_serviceEnabled) {
return;
}
}
_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
_permissionGranted = await location.requestPermission();
if (_permissionGranted != PermissionStatus.granted) {
return;
}
}
- **获取位置**:
LocationData _locationData;
_locationData = await location.getLocation();
print('纬度: ${_locationData.latitude}');
print('经度: ${_locationData.longitude}');
- **持续监听位置变化**:
location.onLocationChanged.listen((LocationData currentLocation) {
print('当前纬度: ${currentLocation.latitude}');
print('当前经度: ${currentLocation.longitude}');
});