Flutter - получить название города

Как я могу узнать название города на флаттере? Я использовал так много пакетов и получил только Lang и Lat, я хочу получить название города !! Есть ли какой-нибудь пакет, который может помочь мне с этой проблемой?

import 'package:flutter_material_pickers/flutter_material_pickers.dart';
import 'package:random_color/random_color.dart';
import 'package:location/location.dart';
import 'package:geocoder/geocoder.dart';

class _ProfileScreenState extends State<ExploreScreen> {
  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
  String cityName = ksaCities[29];
  double userLongitude;
  double userLatitude;
  int page = 0;

  @override
  initState() {
    super.initState();
    getCurrentLocation();
  }

  Future<Address> getCurrentLocation() async {
    LocationData myLocation;
    String error;
    Location location = new Location();
    try {
      myLocation = await location.getLocation();
    } on PlatformException catch (e) {
      if (e.code == 'PERMISSION_DENIED') {
        error = 'please grant permission';
        print(error);
      }
      if (e.code == 'PERMISSION_DENIED_NEVER_ASK') {
        error = 'permission denied- please enable it from app settings';
        print(error);
      }
      myLocation = null;
    }
    final coordinates =
        new Coordinates(myLocation.latitude, myLocation.longitude);
    var addresses =
        await Geocoder.local.findAddressesFromCoordinates(coordinates);
    var first = addresses.first;
    print(
        ' ${first.locality}, ${first.adminArea},${first.subLocality}, ${first.subAdminArea},${first.addressLine}, ${first.featureName},${first.thoroughfare}, ${first.subThoroughfare}');
    return first;
  }
}

person KAMDeveloper    schedule 24.11.2020    source источник
comment
какие пакеты вы уже пробовали?   -  person Nuqo    schedule 24.11.2020
comment
stackoverflow.com/questions/54761683/   -  person Nuqo    schedule 24.11.2020
comment
Этот ответ stackoverflow может вам помочь: stackoverflow.com/a/60911692/14219221   -  person Raj A    schedule 24.11.2020
comment
@Nuqo, я только что сделал это в качестве примера, который вы разместили здесь в комментариях, и он дает мне эту ошибку: [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (177)] Необработанное исключение: MissingPluginException (Не найдено реализации для метода findAddressesFromCoordinates на канал github.com/aloisdeniel/geocoder)   -  person KAMDeveloper    schedule 24.11.2020
comment
@ Nuqo, а потом еще: ‹асинхронная приостановка›   -  person KAMDeveloper    schedule 24.11.2020
comment
обновите свой вопрос кодом.   -  person shirsh shukla    schedule 24.11.2020
comment
comment
@shirshshukla, я обновил вопрос   -  person KAMDeveloper    schedule 24.11.2020
comment
@Nuqo, Это дает мне ошибку: Unhandled Exception: PlatformException (not_available, Empty, null, null) и эта ошибка: ‹асинхронная приостановка›   -  person KAMDeveloper    schedule 24.11.2020
comment
проверьте свой ключ API Google. Правильно ли это, также посмотрите это, github.com/aloisdeniel/flutter_geocoder/issues / 29   -  person shirsh shukla    schedule 24.11.2020


Ответы (1)


Используйте геокодер Это поможет вам получить текущее местоположение (широта, долгота, город, название страны, адрес и т. Д.) )

import 'package:location/location.dart';
 import 'package:geocoder/geocoder.dart';
 import 'package:flutter/services.dart';

getUserLocation() async {

      LocationData myLocation;
      String error;
      Location location = new Location();
      try {
        myLocation = await location.getLocation();
      } on PlatformException catch (e) {
        if (e.code == 'PERMISSION_DENIED') {
          error = 'please grant permission';
          print(error);
        }
        if (e.code == 'PERMISSION_DENIED_NEVER_ASK') {
          error = 'permission denied- please enable it from app settings';
          print(error);
        }
        myLocation = null;
      }
      currentLocation = myLocation;
      final coordinates = new Coordinates(
          myLocation.latitude, myLocation.longitude);
      var addresses = await Geocoder.local.findAddressesFromCoordinates(
          coordinates);
      var first = addresses.first;
      print(' ${first.locality}, ${first.adminArea},${first.subLocality}, ${first.subAdminArea},${first.addressLine}, ${first.featureName},${first.thoroughfare}, ${first.subThoroughfare}');
      return first;
    }

введите описание изображения здесь

person shirsh shukla    schedule 24.11.2020
comment
Выдает мне эту ошибку: [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (177)] Необработанное исключение: MissingPluginException (Реализация для метода findAddressesFromCoordinates на канале github.com/aloisdeniel/geocoder не найдена) - person KAMDeveloper; 24.11.2020
comment
и после этого: ‹асинхронная приостановка› - person KAMDeveloper; 24.11.2020