【问题标题】:Flutter - get city nameFlutter - 获取城市名称
【发布时间】:2020-11-24 12:39:42
【问题描述】:

如何知道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;
  }
}

【问题讨论】:

  • 你尝试过哪些软件包?
  • 这个 stackoverflow 答案可能会对您有所帮助:stackoverflow.com/a/60911692/14219221
  • @Nuqo ,我刚刚完成了您在 cmets 中放在这里的示例,它给了我这个错误:[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException (在 github.com/aloisdeniel/geocoder 频道上找不到方法 findAddressesFromCoordinates 的实现)
  • @Nuqo 之后是这个:

标签: flutter flutter-packages


【解决方案1】:

使用geocoder 这可以帮助您获取当前位置(纬度、经度、城市、国家名称、地址等)

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

【讨论】:

  • 给我这个错误:[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:MissingPluginException(在通道 github.com/aloisdeniel/geocoder 上找不到方法 findAddressesFromCoordinates 的实现)
  • 然后是:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2011-03-20
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多