flutter - 如何在颤振中使用 geoLocator 包在控制台上打印当前位置?
问题描述
这是我在 loading_screen.dart 文件中的代码。我已经明确提到要打印我的位置,甚至在 onpressed 中调用了该方法。仍然没有任何回应。
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
class LoadingScreen extends StatefulWidget {
@override
_LoadingScreenState createState() => _LoadingScreenState();
}
class _LoadingScreenState extends State<LoadingScreen> {
void getLocation() async{
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
print(position);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
getLocation();
},
child: Text('Get Location'),
),
),
);
}
}
解决方案
您的实施中缺少几个步骤。
首先你需要检查权限,如果允许,获取位置,否则请求权限。
您还需要在清单中为 android 和在 info.plist 中为 ios 添加权限
示例代码: -
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Test(),
);
}
}
class Test extends StatefulWidget{
@override
_Test createState() => _Test();
}
class _Test extends State<Test>{
void getLocation() async{
LocationPermission permission = await Geolocator.checkPermission();
if(permission == LocationPermission.always || permission == LocationPermission.whileInUse) {
printLocation();
}else{
requestPermission();
}
}
requestPermission() async{
LocationPermission permission = await Geolocator.requestPermission();
if(permission == LocationPermission.always || permission == LocationPermission.whileInUse) {
printLocation();
}else{
requestPermission();
}
}
printLocation() async{
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.low, timeLimit: Duration(seconds: 10));
print(position);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
getLocation();
},
child: Text('Get Location'),
),
),
);
}
}
推荐阅读
- python - Print the Moving text Every 5 Seconds in selenium python
- ios - 如何检测 RPSystemBroadcastPickerView 何时被解除?
- angular - 即使在输入字段中存在数据之后也会显示警告消息
- java - Scala URLClassLoader 没有重新加载类文件
- jar - 如何通过jar确定库名
- python - 使用外键电子邮件发送电子邮件的问题
- c++ - 我可以用这个类中的嵌套类填充模板参数吗?
- docker - Heroku Bonsai附加组件的私人空间中是否可以有2个服务
- php - 自动增量失败
- xamarin.ios - BlobCache.Secure.LoadImageFromUrl(url) 返回 null