Как получить текущее местоположение на флаттер SDK 1.2.1 - PullRequest
0 голосов
/ 28 февраля 2019

Как узнать текущее местоположение на устройстве Android с помощью флаттера.Я пробовал оба Местоположение и GeoLocator подключаемых модулей GeoLocator 3.0.0 показывает эту ошибку при отладке:

Launching lib\main.dart on Android SDK built for x86 in debug mode...

НЕИСПРАВНОСТЬ: сборка не удалась с исключением.

  • Что пошло не так: выполнение задачи не выполнено: app: preDebugBuild.

    Зависимость Android 'android.arch.lifecycle: runtime' имеет разные версии для пути к классам compile (1.0.0) и runtime (1.1.0).Вы должны вручную установить ту же версию через DependencyResolution

Местоположение 2.0.0 также выдает ошибку при отладке.Существует еще один доступный плагин с именем geoLocation , но он не совместим с dart 2.0.В такой ситуации, как я могу получить местоположение (долгота и широта) [один раз]?Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 11 апреля 2019

Плагин geoLocator, который я установил, использовал библиотеки Android x jetpack, когда мой проект использовал библиотеки поддержки, поэтому этот конфликт вызывал проблему, и когда я обновил свой проект для использования библиотек Android x, проблема была решена.

0 голосов
/ 21 мая 2019

Выполните следующие действия, чтобы получить местоположение как в IOS, так и в Android.

  1. Добавьте geolocator: ^4.0.3 в ваш файл pubspec.yaml под следующими зависимостями: тег
  2. Добавьте import 'package:geolocator/geolocator.dart'; в свойфайл дротика, где вам нужно получить местоположение
  3. Чтобы получить местоположение для Android, добавьте следующие разрешения в файле манифеста проекта Android

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission 
    android:name="android.permission.ACCESS_COARSE_LOCATION" />

Для IOS вам необходимо добавить следующие строки в файле info.plist в <dict> в проекте IOS

<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); }

Приветствия!

0 голосов
/ 11 апреля 2019

Вполне возможно, что до сих пор вы могли найти решение, но я все же добавляю его, чтобы другие могли получить помощь

использовать геолокацию для получения текущего местоположения

В 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');
  }
}

Надеюсь, это поможет

...