繁体   English   中英

如何使用 flutter_google_places_autocomplete.dart 修复错误?

[英]How to fix error with flutter_google_places_autocomplete.dart?

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

我尝试使用flutter_google_places: 0.2.3flutter_google_places: 0.2.3函数(GoogleMapsPlaces,预测)。 接下来我使用了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: Context: Found这个候选人,但论据不匹配。
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' 执行失败。

    进程 '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 failed with exit code 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);
    }
  }
}

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

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

使用导入'package:google_maps_webservice/places.dart'; 同时,导入'package:flutter_google_places/flutter_google_places.dart';

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

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")] );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM