Как исправить ошибку с flutter_google_places_autocomplete.dart? - PullRequest
0 голосов
/ 02 июля 2019

Я делаю приложение с картами Google, в котором вы можете найти место и построить путь к нему на карте. Я хочу показать места и адреса под ним в соответствии с тем, что печатает пользователь. После показа результатов мне нужно получить его широту и долготу, чтобы отметить их на карте.

Я пытался использовать flutter_google_places: 0.2.3, но функции (GoogleMapsPlaces, Prediction) не были определены. Затем я использовал flutter_google_places_autocomplete: 0.1.3 и все было хорошо. К сожалению, когда я попытался запустить проект, я получил ошибку:

Сообщение компилятора: Файл: /// 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 = новые 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'.

    Обработка 'команды' C: \ Users \ admin \ flutter \ bin \ flutter.bat '' завершена с ненулевым значением выхода 1

  • Попробуйте: Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше вывода журнала. Запустите с --scan, чтобы получить полное представление.

  • Получите дополнительную помощь по https://help.gradle.org

СБОЙ ПОСТРОЕНИЯ в 9 с. Закончено с ошибкой: сборка задачи Gradle Отладка не удалось с кодом выхода 1

Мой pubspes.yaml:

зависимости: flutter: 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 Ответ

0 голосов
/ 03 июля 2019

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