如何修复 flutter_google_places_autocomplete.dart 的错误?

     2023-02-23     196

关键词:

【中文标题】如何修复 flutter_google_places_autocomplete.dart 的错误?【英文标题】:How to fix error with flutter_google_places_autocomplete.dart? 【发布时间】:2019-11-13 11:45:27 【问题描述】:

我用谷歌地图制作了一个应用程序,您可以在其中找到一个地方并在地图上建立一条通往它的路径。我想根据用户键入的内容在其下方显示地点和地址。显示结果后,我需要获取其经纬度以在地图上标记。

我尝试使用flutter_google_places: 0.2.3,但未定义函数(GoogleMapsPlaces、Prediction)。接下来我使用了flutter_google_places_autocomplete: 0.1.3,一切都很好。不幸的是,当我尝试运行该项目时出现错误:

编译器消息: file:///C:/Users/admin/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/flutter_google_places_autocomplete-0.1.3/lib/src/flutter_google_places_autocomplete.dart:337:35: 错误:位置参数太多:允许 0 个,但找到了 1 个。尝试 删除额外的位置参数。 _places = new GoogleMapsPlaces(widget.apiKey); ^ file:///C:/Users/admin/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/google_maps_webservice-0.0.14/lib/src/places.dart:22:3: 上下文:找到了这个候选人,但参数不匹配。 GoogleMapsPlaces( ^ 编译器失败 C:\Users\admin\AndroidStudioProjects\advertise_me\lib\main.dart

FAILURE:构建失败并出现异常。

其中:脚本 'C:\Users\admin\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:647

出了什么问题:任务 ':app:compileflutterBuildDebugandroid-arm64' 执行失败。

Process 'command 'C:\Users\admin\flutter\bin\flutter.bat'' 以非零退出值 1 结束

尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

BUILD FAILED in 9s Finished with error: Gradle task assembleDebug 退出代码 1 失败

我的 pubspes.yaml:

依赖关系:颤动: sdk:颤动

cupertino_icons: ^0.1.2 url_launcher: ^4.2.0+1 google_maps_flutter:bottom_sheet_stateful:^0.1.1 flutter_google_places_autocomplete:0.1.3 地理编码器:0.1.2 google_maps_webservice:0.0.14

我的代码:

import 'package:flutter/material.dart';
import 'package:advertise_me/login_screen.dart';
import 'dart:async';
import 'package:google_maps_webservice/geocoding.dart';
//import 'package:flutter_google_places/flutter_google_places.dart';
import 'package:flutter_google_places_autocomplete/flutter_google_places_autocomplete.dart';
import 'package:geocoder/geocoder.dart';


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

const kGoogleApiKey = "My 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 
                Prediction p = await showGooglePlacesAutocomplete(
                    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);
    
  

我该如何解决这个错误? 非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

flutter_google_places_autocomplete 已弃用,您应该改用flutter_google_places。请参阅文档:https://pub.dev/packages/flutter_google_places_autocomplete

一旦你使用flutter_google_places,就使用

Prediction p = await PlacesAutoComplete.show() 而不是showGooglePlacesAutoComplete()

======= 更新答案 =====

import 'package:flutter/material.dart';
//import 'package:advertise_me/login_screen.dart';
import 'dart:async';
import 'package:flutter_google_places/flutter_google_places.dart';
import 'package:geocoder/geocoder.dart';
import 'package:google_maps_webservice/places.dart';


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

const kGoogleApiKey = "My 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 
                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);
    
  

【讨论】:

感谢您的回答。我很不专心。但是,在我导入 flutter_google_places: 0.2.3 后出现错误(未定义类“GoogleMapsPlaces”。未定义函数“GoogleMapsPlaces”。未定义类“预测”。未定义类“预测”。未定义类“PlacesDetailsResponse”。)。你能帮我解决这些问题吗?或者我应该在另一个问题中问这个吗? 那是因为您的代码缺少正确的导入。为了使用GoogleMapsPlacesPredictionPlacesDetailsResponse,您需要导入package:google_maps_webservice/places.dart。我用工作代码更新了我的答案。这应该可以解决您面临的问题。 谢谢,我意识到我必须导入:google_maps_webservice/places。你能告诉我为什么 Unhandled Exception: NoSuchMethodError: The getter 'geometry' was called on null。我认为这是预测 p = null,但为什么会发生这种情况?我选择了这个地方还是我做错了什么?如果是真的,我怎样才能得到用户点击的位置? 可能是由于为您的项目配置了 google api。检查该功能是否已启用并按照 api 密钥的预期工作。请参阅针对插件发布的此问题:github.com/fluttercommunity/flutter_google_places/issues/51 另外,我认为您最初发布问题的原始问题已经解决。如果是这样,您可以接受我的回答让其他人也知道:-)【参考方案2】:

使用 import 'package:google_maps_webservice/places.dart'; 和 import 'package:flutter_google_places/flutter_google_places.dart';

【讨论】:

【参考方案3】:

使用完整的函数参数列表,例如:

Prediction p = await PlacesAutocomplete.show( offset: 0, radius: 1000, types: [], strictbounds: false,
region: "ar", context: context, apiKey: googleAPIKey, mode: Mode.overlay, language: "es", components: [Component(Component.country, "ar")] );

【讨论】:

如何禁用增量修复?

】如何禁用增量修复?【英文标题】:HowdoIdisableincrementalrepair?【发布时间】:2017-07-1110:26:24【问题描述】:我有一个集群,我正在考虑启用增量修复。如果出现任何问题,我想在每个节点上禁用增量修复。我该怎么做?【问题... 查看详情

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

】如何修复这些漏洞?(npmauditfix无法修复这些漏洞)【英文标题】:Howtofixthesevulnerabilities?(npmauditfixfailstofixthesevulnerabilities)【发布时间】:2020-02-1520:35:23【问题描述】:我的项目有6个高度严重的漏洞,我不知道如何修复它们。... 查看详情

分享网站漏洞检测与如何修复网站逻辑漏洞

分享网站漏洞检测与如何修复网站逻辑漏洞分类专栏:网站安全网站被篡改网站被黑如何防止网站被黑如何防止网站被侵入如何防止网站被挂马网站安全服务网站安全防护服务网站安全维护网站安全问题ecshop漏洞修复MetInfo漏洞... 查看详情

如何使用 scrollView 修复背景图像和使用 edittext 修复 textviews

】如何使用scrollView修复背景图像和使用edittext修复textviews【英文标题】:HowtofixbackgroundimagewithscrollViewandtextviewswithedittext【发布时间】:2016-11-1006:10:34【问题描述】:windowSoftInputMode出现时如何用滚动视图修复背景图像。我使用了w... 查看详情

如何修复高度:在 Firefox 中使用 flexbox 自动修复? [复制]

】如何修复高度:在Firefox中使用flexbox自动修复?[复制]【英文标题】:Howtofixheight:autowithflexboxinFirefox?[duplicate]【发布时间】:2017-12-1017:29:22【问题描述】:我对flexbox和height:autoinFirefox有疑问:.portfoliowidth:100%;position:relative;overflow... 查看详情

如何修复“缺少'使用严格'声明”?

】如何修复“缺少\\\'使用严格\\\'声明”?【英文标题】:HowcanIfix"Missing\'usestrict\'statement"?如何修复“缺少\'使用严格\'声明”?【发布时间】:2016-02-0917:46:33【问题描述】:$(document).ready(function()\'usestrict\';$(\'#c2\').hide(\'sl... 查看详情

给定修复的提交哈希,我怎么能弄清楚代码是如何修复的? [复制]

】给定修复的提交哈希,我怎么能弄清楚代码是如何修复的?[复制]【英文标题】:Giventhecommithashofafix,howcouldIgetthefigureouthowexactlythecodeisfixed?[duplicate]【发布时间】:2018-08-2510:38:00【问题描述】:假设我有一个修复错误的提交哈希... 查看详情

修复 WiX 捆绑包时如何防止 .NET 修复?

】修复WiX捆绑包时如何防止.NET修复?【英文标题】:HowdoIprevent.NETfromrepairingwhenrepairingaWiXbundle?【发布时间】:2013-12-0419:01:00【问题描述】:我有一个使用burn创建的包安装程序,第一步安装.NET:<Chain><!--Applicationsdependon.NET4... 查看详情

节点:如何修复路由?

】节点:如何修复路由?【英文标题】:Node:Howtofixrouting?【发布时间】:2017-11-1006:51:03【问题描述】:我需要使用路由器来集成应用程序。我使用app.use(\'/chat\'来定义应用程序。应用程序单独工作,但不能与路由文件一起工作。... 查看详情

如何修复 c6385?

】如何修复c6385?【英文标题】:HowcanIfixc6385?【发布时间】:2022-01-0719:48:52【问题描述】://Takelastelementfromdeckandaddtodealer\'shand//Updatecurrentelementsafter//Ensurethedeckstillhascardsif(deck.currentElements==0)getNewDeck(deck);shuffleD 查看详情

如何修复导航菜单

】如何修复导航菜单【英文标题】:Howtofixnavmenu【发布时间】:2020-09-2503:42:19【问题描述】:如何修复我的菜单,当网络稳定菜单仅在移动设备上,但菜单不显示或隐藏时<divclass="container"><aclass="logo"href="<?phpechosite_url();?... 查看详情

如何修复跨站点脚本(XSS)?我们可以使用 .htaccess 修复吗

】如何修复跨站点脚本(XSS)?我们可以使用.htaccess修复吗【英文标题】:HowtofixCrossSiteScripting(XSS)?canwefixusing.htaccess【发布时间】:2018-05-2509:58:10【问题描述】:我无法修复我们网站上的跨站脚本(XSS)。我正在清理输入。部分代... 查看详情

如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?

】如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?【英文标题】:HowtofixPossibleUnhandledPromiseRejection(id:0)?andHowtofixCannotreadproperty\'navigate\'ofundefined?【发布时间】:2019-08-1105:17:07【问题描述... 查看详情

如何轻松修复 Checkstyle 错误?

】如何轻松修复Checkstyle错误?【英文标题】:HowcanIeasilyfixCheckstyleerrors?【发布时间】:2012-01-1414:18:05【问题描述】:有没有办法让IDE自动修复Checkstyle错误而无需手动修复每个错误?【问题讨论】:【参考方案1】:有一种方法可... 查看详情

如何修复 MSSQLLocalDB?

】如何修复MSSQLLocalDB?【英文标题】:HowtofixMSSQLLocalDB?【发布时间】:2015-11-0905:26:20【问题描述】:在我的机器上MSSQLLocalDB已损坏:PSC:\\WINDOWS\\system32>sqllocaldbiMSSQLLocalDBProjectsProjectsV12v11.0PSC:\\WINDOWS\\system32>sqllocaldbimssqlloc 查看详情

如何使用 Objective-C 修复 UIViewController 中的页脚?

】如何使用Objective-C修复UIViewController中的页脚?【英文标题】:HowtofixthefooterinUIViewControllerusingObjective-C?【发布时间】:2017-05-0609:16:51【问题描述】:我对iOS编程非常陌生。我必须修复UIViewController中的页脚。我知道如何修复UITable... 查看详情

如何修复 Firebase 通知

】如何修复Firebase通知【英文标题】:HowtofixFirebaseNotifications【发布时间】:2019-04-0308:08:44【问题描述】:我已经正确实现了Firebase通知,一些设备没有收到vivo通知,在后台运行时对焦如何解决该问题publicvoidgetNotification(Stringicon,S... 查看详情

如何修复 NSInvalidUnarchiveOperationException

】如何修复NSInvalidUnarchiveOperationException【英文标题】:HowcanIfixNSInvalidUnarchiveOperationException【发布时间】:2012-06-2014:24:49【问题描述】:*由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“*-[NSKeyedUnarchive... 查看详情