我使用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.dartFAILURE: 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/