我无法使用google search place API实现搜索place import'包装:flift/cupertino.dart'; 进口“包装:颤振/材料.省道”; 导入“包:flatter\u google\u places/src/flatter\u google\u places.dart” 谷歌的地方; 导入“package:flatter_google_places/flatter_google_places.dart”; 导入“包:geocoder/geocoder.dart”; 导入“包:google_maps_webservice/places.dart”; 类主页扩展了StatefulWidget{ 主页({Key}):超级(Key:Key); @凌驾 _HomePageState createState()=>\u HomePageState(); } 类_HomePageState扩展状态{ TextEditingController地址控制器=TextEditingController(); 谷歌地图= 谷歌地图; 双lat; 双液化天然气; @凌驾 小部件构建(构建上下文){ 返回脚手架( 主体:容器( 子项:TextFormField( 验证器:(值){ if(value.isEmpty){ 返回“请输入有效地址”; } 返回null; }, 控制器:地址控制器, 装饰:输入装饰( enabledBorder:新大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), 聚焦顺序:新大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), 边框:大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), hintText:“地址”, labelText:“地址”, ), onTap:()异步{ var预测=等待地点SautoComplete.show( 上下文:上下文, apiKey:“apiKey”, logo:Container(), 语言:"en",, 模式:googlePlaces.mode.overlay, ); addressController.text=prediction.description; 显示预测(预测); }, ), ), ); } 未来显示预测(p)异步{ 如果(p!=null){ 位置细节响应细节= 等待地点。getDetailsByPlaceId(p.placeId); 双板条=detail.result.geometry.location.lat; 双lngg=详图.result.geometry.location.lng; 设置状态(){ lat=double.parse(latt.toStringAsFixed(4)); lng=double.parse(lngg.toStringAsFixed(3)); }); } } }`

我无法使用google search place API实现搜索place import'包装:flift/cupertino.dart'; 进口“包装:颤振/材料.省道”; 导入“包:flatter\u google\u places/src/flatter\u google\u places.dart” 谷歌的地方; 导入“package:flatter_google_places/flatter_google_places.dart”; 导入“包:geocoder/geocoder.dart”; 导入“包:google_maps_webservice/places.dart”; 类主页扩展了StatefulWidget{ 主页({Key}):超级(Key:Key); @凌驾 _HomePageState createState()=>\u HomePageState(); } 类_HomePageState扩展状态{ TextEditingController地址控制器=TextEditingController(); 谷歌地图= 谷歌地图; 双lat; 双液化天然气; @凌驾 小部件构建(构建上下文){ 返回脚手架( 主体:容器( 子项:TextFormField( 验证器:(值){ if(value.isEmpty){ 返回“请输入有效地址”; } 返回null; }, 控制器:地址控制器, 装饰:输入装饰( enabledBorder:新大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), 聚焦顺序:新大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), 边框:大纲输入边框( borderSide:const borderSide(颜色:Colors.grey,宽度:1), ), hintText:“地址”, labelText:“地址”, ), onTap:()异步{ var预测=等待地点SautoComplete.show( 上下文:上下文, apiKey:“apiKey”, logo:Container(), 语言:"en",, 模式:googlePlaces.mode.overlay, ); addressController.text=prediction.description; 显示预测(预测); }, ), ), ); } 未来显示预测(p)异步{ 如果(p!=null){ 位置细节响应细节= 等待地点。getDetailsByPlaceId(p.placeId); 双板条=detail.result.geometry.location.lat; 双lngg=详图.result.geometry.location.lng; 设置状态(){ lat=double.parse(latt.toStringAsFixed(4)); lng=double.parse(lngg.toStringAsFixed(3)); }); } } }`,api,flutter,location,google-places-api,google-location-services,Api,Flutter,Location,Google Places Api,Google Location Services,我无法使用google search place API实现搜索place。我在上面提到我的代码,请检查一下。我还添加了我在上述代码中遇到的相应错误的屏幕截图。请帮我解决这个问题。[请查看我面临的问题的图片] [错误:flatter/lib/ui/ui\u dart\u state.cc(186)]未处理的异常:NoSuchMethodError:对null调用了getter“isNotEmpty”。E/flatter(31426):接收器:空E/flatter(31426):尝试呼叫:isNo

我无法使用google search place API实现搜索place。我在上面提到我的代码,请检查一下。我还添加了我在上述代码中遇到的相应错误的屏幕截图。请帮我解决这个问题。[请查看我面临的问题的图片]

[错误:flatter/lib/ui/ui\u dart\u state.cc(186)]未处理的异常:NoSuchMethodError:对null调用了getter“isNotEmpty”。E/flatter(31426):接收器:空E/flatter(31426):尝试呼叫:isNotEmpty

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_google_places/src/flutter_google_places.dart'
    as googlePlaces;
import 'package:flutter_google_places/flutter_google_places.dart';
import 'package:geocoder/geocoder.dart';
import 'package:google_maps_webservice/places.dart';
class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);
  @override
  _HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
  TextEditingController addressController = TextEditingController();
  GoogleMapsPlaces _places =
      GoogleMapsPlaces(apiKey: "_apiKey");
  double lat;
  double lng;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: TextFormField(
          validator: (value) {
            if (value.isEmpty) {
              return 'Please enter a valid address';
            }
            return null;
          },
          controller: addressController,
          decoration: InputDecoration(
            enabledBorder: new OutlineInputBorder(
              borderSide: const BorderSide(color: Colors.grey, width: 1),
            ),
            focusedBorder: new OutlineInputBorder(
              borderSide: const BorderSide(color: Colors.grey, width: 1),
            ),
            border: OutlineInputBorder(
              borderSide: const BorderSide(color: Colors.grey, width: 1),
            ),
            hintText: "Address",
            labelText: "Address",
          ),
          onTap: () async {
            var prediction = await PlacesAutocomplete.show(
              context: context,
              apiKey: "ApiKey",
              logo: Container(),
              language: 'en',
              mode: googlePlaces.Mode.overlay,
            );
            addressController.text = prediction.description;
            displayPrediction(prediction);
          },
          
        ),
      ),
    );
  }
  Future<Null> displayPrediction(p) async {
    if (p != null) {
      PlacesDetailsResponse detail =
          await _places.getDetailsByPlaceId(p.placeId);
      
      double latt = detail.result.geometry.location.lat;
      double lngg = detail.result.geometry.location.lng;
     
      setState(() {
        lat = double.parse(latt.toStringAsFixed(4));
        lng = double.parse(lngg.toStringAsFixed(3));
      });
    }
  }
}`