如何在 flutter sdk 1.2.1 上获取当前位置
How to get current location on flutter sdk 1.2.1
如何使用 flutter 在 android 设备上获取当前位置。我已经尝试了两个 Location and GeoLocator 插件 GeoLocator 3.0.0 在调试时显示此错误:
Launching lib\main.dart on Android SDK built for x86 in debug mode...
失败:构建失败,出现异常。
- 出了什么问题:
任务 ':app:preDebugBuild' 执行失败。
Android dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution
Location 2.0.0 也会在调试时抛出错误。还有另一个名为 geoLocation 的插件可用,但它与 dart 2.0 不兼容。
在这种情况下,我如何获得位置(经度和纬度)[一次]?
任何帮助将不胜感激。
直到现在你可能已经找到了解决方案,但我仍然添加这个以便其他人可以获得帮助
使用地理定位器获取当前位置
在pubsec.yaml
geolocator: '^2.0.1'
在你的飞镖文件中
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
void main() => runApp(MapScreen());
class MapScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Map",
home: MapActivity(),
);
}
}
class MapActivity extends StatefulWidget {
@override
_MapActivityState createState() => _MapActivityState();
}
class _MapActivityState extends State<MapActivity> {
LatLng _center ;
Position currentLocation;
@override
void initState() {
// TODO: implement initState
super.initState();
getUserLocation();
}
Future<Position> locateUser() async {
return Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
}
getUserLocation() async {
currentLocation = await locateUser();
setState(() {
_center = LatLng(currentLocation.latitude, currentLocation.longitude);
});
print('center $_center');
}
}
希望对您有所帮助
我安装的 geoLocator 插件正在使用 Android x jetpack 库,而我的项目正在使用支持库,所以这个冲突导致了问题,当我更新我的项目以使用 Android x 库时问题已解决。
按照这些步骤在 IOS 和 Android 中获取位置。
- 在您的 pubspec.yaml 文件中添加
geolocator: ^4.0.3
依赖项:tag
- 在您需要获取位置的飞镖文件中添加
import 'package:geolocator/geolocator.dart';
- 为了获取 android 的位置,在 android 项目清单文件中添加以下权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
对于 IOS,您需要在 IOS 项目
的 <dict>
下的 info.plist 文件中添加以下行
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
获取位置的函数
void getLocation() async { Position position = await Geolocator .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); print(position); }
干杯!
在 pubsec.yaml
中添加 GeoLocation 插件
geolocator: ^6.0.0
运行 flutter pub get
在app/src/main/AndroidManifest.xml
中为Android添加位置权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
- 对于 iOS 在 info.plist
中添加以下键
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
- 获取用户当前位置的 Creart 函数:
LatLng currentPostion;
void _getUserLocation() async {
var position = await GeolocatorPlatform.instance
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
setState(() {
currentPostion = LatLng(position.latitude, position.longitude);
});
}
- 在您的 googlemap 中使用 currentPostion。 (定义 Latlag 当前位置);
GoogleMap(
// onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: currentPostion,
zoom: 10,
),
),
如何使用 flutter 在 android 设备上获取当前位置。我已经尝试了两个 Location and GeoLocator 插件 GeoLocator 3.0.0 在调试时显示此错误:
Launching lib\main.dart on Android SDK built for x86 in debug mode...
失败:构建失败,出现异常。
- 出了什么问题:
任务 ':app:preDebugBuild' 执行失败。
Android dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution
Location 2.0.0 也会在调试时抛出错误。还有另一个名为 geoLocation 的插件可用,但它与 dart 2.0 不兼容。 在这种情况下,我如何获得位置(经度和纬度)[一次]? 任何帮助将不胜感激。
直到现在你可能已经找到了解决方案,但我仍然添加这个以便其他人可以获得帮助
使用地理定位器获取当前位置
在pubsec.yaml
geolocator: '^2.0.1'
在你的飞镖文件中
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
void main() => runApp(MapScreen());
class MapScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Map",
home: MapActivity(),
);
}
}
class MapActivity extends StatefulWidget {
@override
_MapActivityState createState() => _MapActivityState();
}
class _MapActivityState extends State<MapActivity> {
LatLng _center ;
Position currentLocation;
@override
void initState() {
// TODO: implement initState
super.initState();
getUserLocation();
}
Future<Position> locateUser() async {
return Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
}
getUserLocation() async {
currentLocation = await locateUser();
setState(() {
_center = LatLng(currentLocation.latitude, currentLocation.longitude);
});
print('center $_center');
}
}
希望对您有所帮助
我安装的 geoLocator 插件正在使用 Android x jetpack 库,而我的项目正在使用支持库,所以这个冲突导致了问题,当我更新我的项目以使用 Android x 库时问题已解决。
按照这些步骤在 IOS 和 Android 中获取位置。
- 在您的 pubspec.yaml 文件中添加
geolocator: ^4.0.3
依赖项:tag - 在您需要获取位置的飞镖文件中添加
import 'package:geolocator/geolocator.dart';
- 为了获取 android 的位置,在 android 项目清单文件中添加以下权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
对于 IOS,您需要在 IOS 项目
的<dict>
下的 info.plist 文件中添加以下行<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
获取位置的函数
void getLocation() async { Position position = await Geolocator .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); print(position); }
干杯!
在 pubsec.yaml
中添加 GeoLocation 插件geolocator: ^6.0.0
运行 flutter pub get
在app/src/main/AndroidManifest.xml
中为Android添加位置权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
- 对于 iOS 在 info.plist 中添加以下键
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
- 获取用户当前位置的 Creart 函数:
LatLng currentPostion;
void _getUserLocation() async {
var position = await GeolocatorPlatform.instance
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
setState(() {
currentPostion = LatLng(position.latitude, position.longitude);
});
}
- 在您的 googlemap 中使用 currentPostion。 (定义 Latlag 当前位置);
GoogleMap(
// onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: currentPostion,
zoom: 10,
),
),