[英]Flutter iOS App Crashes Immediately when asking for location
我只是试图使用位置酒吧 package 获取设备的当前位置,但是应用程序在运行时崩溃。 我确保对Info.plist
的所有权限,即
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>...</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>...</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>...</string>
<key>UIBackgroundModes</key>
<string>location</string>
当我从 package 位置调用任何方法时,应用程序会立即崩溃。
这是我的实现(直接取自 package 示例):
// user_location.dart
import 'package:location/location.dart';
class UserLocation {
Location location = Location();
late bool _serviceIsEnabled;
late PermissionStatus _permissionGranted;
late LocationData _locationData;
Future<LocationData?> getLocation() async {
print("Getting location");
_serviceIsEnabled = await location.serviceEnabled(); // crashes right here <-
if (!_serviceIsEnabled) {
_serviceIsEnabled = await location.requestService();
if (!_serviceIsEnabled) return null;
}
_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
_permissionGranted = await location.requestPermission();
if (_permissionGranted != PermissionStatus.granted) {
return null;
}
}
_locationData = await location.getLocation();
return _locationData;
}
}
// main.dart
Future main() async {
await dotenv.load();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
LocationData? _userLocation;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() async {
final location = await UserLocation().getLocation();
_userLocation = location;
});
});
}
使用 flutter v3.0.5 和位置 ^4.4.0
这个帖子解决了
只需在 Xcode 的 Signing & Capabilities 中启用后台模式 > 位置更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.