google-maps - 如何使用flutter_google_places_autocomplete.dart解决错误?

标签 google-maps flutter dart googleplacesautocomplete

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

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

Compiler message: 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: Error: Too many positional arguments: 0 allowed, but 1 found. Try removing the extra positional arguments. _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 this candidate, but the arguments don't match.
GoogleMapsPlaces({ ^ Compiler failed on C:\Users\admin\AndroidStudioProjects\advertise_me\lib\main.dart

FAILURE: Build failed with an exception.

  • Where: Script 'C:\Users\admin\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 647

  • What went wrong: Execution failed for task ':app:compileflutterBuildDebugandroid-arm64'.

    Process 'command 'C:\Users\admin\flutter\bin\flutter.bat'' finished with non-zero exit value 1

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行,以获取更多日志输出。与--scan一起运行以获取完整的见解。
  • https://help.gradle.org上获得更多帮助


  • 9秒内失败,并完成错误:Gradle任务assembleDebug
    失败,退出代码为1

    我的pubspes.yaml:

    dependencies: flutter: sdk: flutter

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

关于google-maps - 如何使用flutter_google_places_autocomplete.dart解决错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56859043/

相关文章:

sqlite - Dart-使用泛型将List <SuperType>转换为List <SubType>

java - 如何在谷歌地图上添加矩形框?

dart - 如何围绕指定的 anchor 旋转 2D 容器小部件?

dart - 用于 Flutter/Dart 的 Google Sheets API v4

AndroidX 错误 : Both old and new data binding packages are available in dependencies. 我正在将 flutter 项目升级到 AndroidX

flutter - .contains不能像我想的那样 flutter/Dart

flutter - Dart:更喜欢常量构造函数

google-maps - 使用Google Maps的dart类 'GElement'没有实例方法 '[]'

php - 为什么谷歌地图不显示?

java - Android map View 未加载内容