Flutter 从自动完成中获得城市、国家

Flutter 从自动完成中获得城市、国家,flutter,Flutter,我有一个自动完成的位置,我找不到城市名称,国家和所有的细节存储在哪里。我想将它们转换为变量,例如city=name.city,但我找不到从何处获取它们 程序所做的就是获取地址的long和lat。我试着和他们混在一起,但还是找不到他们把细节放在哪里 这是我的密码 import 'package:google_maps_webservice/places.dart'; import 'package:geocoder/geocoder.dart'; import 'package:flutter_

我有一个自动完成的位置,我找不到城市名称,国家和所有的细节存储在哪里。我想将它们转换为变量,例如city=name.city,但我找不到从何处获取它们

程序所做的就是获取地址的long和lat。我试着和他们混在一起,但还是找不到他们把细节放在哪里

这是我的密码

 import 'package:google_maps_webservice/places.dart';
import 'package:geocoder/geocoder.dart';
import 'package:flutter_google_places/flutter_google_places.dart';

   void main() => runApp(MyApp());

const kGoogleApiKey = "Api_key";

GoogleMapsPlaces _places = GoogleMapsPlaces(apiKey: kGoogleApiKey);

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: demo(),
      ),
    );
  }
}

class demo extends StatefulWidget {
  @override
  demoState createState() => new demoState();
}

class demoState extends State<demo> {
  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body: Container(
        alignment: Alignment.center,
        child: RaisedButton(
          onPressed: () async {
            // show input autocomplete with selected mode
            // then get the Prediction selected
            Prediction p = await PlacesAutocomplete.show(
                context: context, apiKey: kGoogleApiKey);
            displayPrediction(p);
          },
          child: Text('Find address'),

        )
      )
    );
  }

  Future<Null> displayPrediction(Prediction p) async {
    if (p != null) {
      PlacesDetailsResponse detail =
      await _places.getDetailsByPlaceId(p.placeId);

      var placeId = p.placeId;
      double lat = detail.result.geometry.location.lat;
      double lng = detail.result.geometry.location.lng;

      var address = await Geocoder.local.findAddressesFromQuery(p.description);

      print(lat);
      print(lng);
    }
  }
}
import'package:google_maps_webservice/places.dart';
导入“包:geocoder/geocoder.dart”;
导入“package:flatter_google_places/flatter_google_places.dart”;
void main()=>runApp(MyApp());
const kGoogleApiKey=“Api_key”;
GoogleMapsPlaces _places=GoogleMapsPlaces(apiKey:kGoogleApiKey);
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:demo(),
),
);
}
}
类demo扩展StatefulWidget{
@凌驾
demoState createState()=>新建demoState();
}
类demoState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
对齐:对齐.center,
孩子:升起按钮(
onPressed:()异步{
//显示所选模式下的输入自动完成
//然后选择预测
预测p=等待地点SautoComplete.show(
context:context,apiKey:kgoogleapkey);
显示预测(p);
},
子项:文本(“查找地址”),
)
)
);
}
未来显示预测(预测p)异步{
如果(p!=null){
位置细节响应细节=
等待地点。getDetailsByPlaceId(p.placeId);
var placeId=p.placeId;
双lat=detail.result.geometry.location.lat;
双液化天然气=详图.result.geometry.location.lng;
var address=await Geocoder.local.findAddressesFromQuery(p.description);
打印(lat);
印刷品(液化天然气);
}
}
}

谷歌地图SAPI地点详细信息不保证响应中的城市名称,但您可以访问国家名称和国家ISO代码,如下所示

Future<Null> displayPrediction(Prediction p) async {
  if (p != null) {
    PlacesDetailsResponse detail = await _places.getDetailsByPlaceId(p.placeId);

    var placeId = p.placeId;
    String countryIso, countryName;
    double lat = detail.result.geometry.location.lat;
    double lng = detail.result.geometry.location.lng;

    var address = await Geocoder.local.findAddressesFromQuery(p.description);

    for (var adrComp in detail.result.addressComponents) {
      if (adrComp.types.contains("country")) {
        countryIso = adrComp.shortName;
        countryName = adrComp.longName;
      }
    }

    print(lat);
    print(lng);
  }
}
未来显示预测(预测p)异步{
如果(p!=null){
PlacesDetailsResponse detail=等待_places.getDetailsByPlaceId(p.placeId);
var placeId=p.placeId;
字符串countryIso,countryName;
双lat=detail.result.geometry.location.lat;
双液化天然气=详图.result.geometry.location.lng;
var address=await Geocoder.local.findAddressesFromQuery(p.description);
for(var adrComp详细信息.result.addressComponents){
if(adrComp.types.contains(“国家”)){
countryIso=adrComp.shortName;
countryName=adrComp.longName;
}
}
打印(lat);
印刷品(液化天然气);
}
}

我需要在编成的详细信息中放入什么才能工作,因为现在它不工作了它从那些字符串返回null..现在我得到了:W/IInputConnectionWrapper(1893):GetTextBefore光标在非活动InputConnection上W/IInputConnectionWrapper(1893):getSelectedText在非活动InputConnection上W/IInputConnectionWrapper(1893):getTextAfterCursor on inactive InputConnection W/IIInputConnectionWrapper(1893):beginBatchEdit on inactive InputConnection W/IIInputConnectionWrapper(1893):getTextBeforeCursor on inactive InputConnection W/IIInputConnectionWrapper(1893):endBatchEdit on inactive InputConnection问题区分大小写。尝试将“国家”替换为“国家”检查我的上次编辑