fysoul17 / google_maps_place_picker

Place picker on Google Maps for Flutter
MIT License
223 stars 365 forks source link

search not working #100

Open anas-aw opened 3 years ago

anas-aw commented 3 years ago

Describe the bug when i want to use search i get error and maps return me to current location

Code `return PlacePicker( apiKey: "hide my api key", initialPosition: kInitialPosition, useCurrentLocation: true, selectInitialPosition: true,

                      usePlaceDetailSearch: true,
                      // onPlacePicked: (result) {
                      //   setState(() {
                      //     SelectedPlace = result;
                      //     Navigator.of(context).pop();
                      //     latitude = SelectedPlace.geometry.location.lat
                      //         .toString();
                      //     longitude = SelectedPlace.geometry.location.lng
                      //         .toString();
                      //     street.text = SelectedPlace.formattedAddress;
                      //   });
                      // },
                      forceSearchOnZoomChanged: true,
                      automaticallyImplyAppBarLeading: true,
                      //autocompleteLanguage: "ko",
                      region: 'jo',
                      selectedPlaceWidgetBuilder: (_, selectedPlace, state, isSearchBarFocused) {
                        print("state: $state, isSearchBarFocused: $isSearchBarFocused");
                        return isSearchBarFocused
                            ? Container()
                            : FloatingCard(
                                bottomPosition: 0.0, // MediaQuery.of(context) will cause rebuild. See MediaQuery document for the information.
                                leftPosition: 0.0,
                                rightPosition: 0.0,
                                width: 500,
                                borderRadius: BorderRadius.only(topLeft: Radius.circular(30),topRight: Radius.circular(30)),
                                child:
                                state == SearchingState.Searching
                                    ? Container(

                                    padding: const EdgeInsets.all(8.0),
                                    width: MediaQuery.of(context).size.width-50,
                                    decoration: BoxDecoration(
                                        color: background,
                                        borderRadius: BorderRadius.only(topLeft: Radius.circular(30),topRight: Radius.circular(30)),

                                        boxShadow: [
                                          BoxShadow(
                                              blurRadius: 15,
                                              spreadRadius: 5,
                                              color: Color.fromRGBO(0, 0, 0, .1))
                                        ]
                                    ),
                                    child: Column(children: [
                                      SizedBox(height: 8,),

                                      Center(child: Text('Searching',style: TextStyle(color: mainColor,fontSize: 20),)),
                                      SizedBox(height: 52,),
                                      SizedBox(
                                        height: 40,
                                        width: MediaQuery.of(context).size.width,
                                        child: RaisedButton(
                                          color: mainColor,shape: RoundedRectangleBorder(
                                            borderRadius: BorderRadius.circular(30.0)
                                        ),
                                          child: Text(tr('address.select_on_map'),style: TextStyle(color: background, fontSize: 18),),
                                          onPressed: () {
                                            setState(() {
                                              SelectedPlace = selectedPlace;
                                              latitude = selectedPlace.geometry.location.lat
                                                  .toString();
                                              longitude = selectedPlace.geometry.location.lng
                                                  .toString();
                                              street.text = selectedPlace.formattedAddress;
                                            });
                                            print("latitude : ${latitude} longitude : ${longitude} street.text : ${street.text} ");
                                            Navigator.of(context).pop();
                                          },
                                        ),
                                      ),
                                      SizedBox(height: 8,),

                                    ],)
                                )
                                    : Container(
                                  padding: const EdgeInsets.all(8.0),
                                  width: MediaQuery.of(context).size.width-50,
                                  decoration: BoxDecoration(
                                      color: background,
                                      borderRadius: BorderRadius.only(topLeft: Radius.circular(30),topRight: Radius.circular(30)),

                                      boxShadow: [
                                        BoxShadow(
                                            blurRadius: 15,
                                            spreadRadius: 5,
                                            color: Color.fromRGBO(0, 0, 0, .1))
                                      ]
                                  ),
                                      child: Column(children: [
                                        SizedBox(height: 8,),

                                        Center(child: Text('${selectedPlace.formattedAddress}',style: TextStyle(color: mainColor,fontSize: 20),)),
                                        SizedBox(height: 12,),
                                        SizedBox(
                                          height: 40,
                                          width: MediaQuery.of(context).size.width,
                                          child: RaisedButton(
                                            color: mainColor,shape: RoundedRectangleBorder(
                                              borderRadius: BorderRadius.circular(30.0)
                                          ),
                                            child: Text(tr('address.select_on_map'),style: TextStyle(color: background, fontSize: 18),),
                                            onPressed: () {
                                              setState(() {
                                                SelectedPlace = selectedPlace;
                                                latitude = selectedPlace.geometry.location.lat
                                                    .toString();
                                                longitude = selectedPlace.geometry.location.lng
                                                    .toString();
                                                street.text = selectedPlace.formattedAddress;
                                              });
                                              print("latitude : ${latitude} longitude : ${longitude} street.text : ${street.text} ");
                                              Navigator.of(context).pop();
                                            },
                                          ),
                                        ),
                                        SizedBox(height: 8,),

                                      ],)
                                    ),
                              );
                      },
                      pinBuilder: (context, state) {
                        if (state == PinState.Idle) {
                          return Icon(Icons.location_on_rounded,color: mainColor,size: 50,);
                        } else {
                          return Icon(Icons.location_searching,color: secondColor,);
                        }
                      },

                    );`

To Reproduce Steps to reproduce the behavior:

  1. open maps
  2. insert search text
  3. select from search
  4. See error

I/flutter (20699): state: SearchingState.Idle, isSearchBarFocused: false D/EGL_emulation(20699): eglMakeCurrent: 0xedbe5700: ver 3 1 (tinfo 0xedb1ba90) E/flutter (20699): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method camera#animate on channel plugins.flutter.io/google_maps_12) E/flutter (20699): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157:7) E/flutter (20699): <asynchronous suspension> E/flutter (20699): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12) E/flutter (20699): #2 MethodChannelGoogleMapsFlutter.animateCamera (package:google_maps_flutter_platform_interface/src/method_channel/method_channel_google_maps_flutter.dart:359:10) E/flutter (20699): #3 GoogleMapController.animateCamera (package:google_maps_flutter/src/controller.dart:184:39) E/flutter (20699): #4 _PlacePickerState._moveTo (package:google_maps_place_picker/src/place_picker.dart:303:22) E/flutter (20699): #5 _PlacePickerState._pickPrediction (package:google_maps_place_picker/src/place_picker.dart:293:11) E/flutter (20699): <asynchronous suspension> E/flutter (20699): #6 _PlacePickerState._buildSearchBar.<anonymous closure> (package:google_maps_place_picker/src/place_picker.dart:245:17) E/flutter (20699): #7 AutoCompleteSearchState._buildPredictionOverlay.<anonymous closure>.<anonymous closure> (package:google_maps_place_picker/src/autocomplete_search.dart:274:32) E/flutter (20699): #8 PredictionTile.build.<anonymous closure> (package:google_maps_place_picker/src/components/prediction_tile.dart:21:16) E/flutter (20699): #9 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19) E/flutter (20699): #10 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1111:38) E/flutter (20699): #11 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24) E/flutter (20699): #12 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11) E/flutter (20699): #13 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5) E/flutter (20699): #14 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:222:7) E/flutter (20699): #15 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:476:9) E/flutter (20699): #16 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:77:12) E/flutter (20699): #17 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9) E/flutter (20699): #18 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8) E/flutter (20699): #19 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18) E/flutter (20699): #20 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7) E/flutter (20699): #21 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:358:19) E/flutter (20699): #22 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22) E/flutter (20699): #23 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11) E/flutter (20699): #24 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7) E/flutter (20699): #25 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7) E/flutter (20699): #26 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7) E/flutter (20699): #27 _rootRunUnary (dart:async/zone.dart:1206:13) E/flutter (20699): #28 _CustomZone.runUnary (dart:async/zone.dart:1100:19) E/flutter (20699): #29 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7) E/flutter (20699): #30 _invoke1 (dart:ui/hooks.dart:265:10) E/flutter (20699): #31 _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5) E/flutter (20699): E/BufferQueueProducer(20699): [SurfaceTexture-0-20699-12] setAsyncMode: BufferQueue has been abandoned

wa11breaker commented 3 years ago

Make sure you enabled billing

anas-aw commented 3 years ago

Make sure you enabled billing

it's not billing issue when i comment selectedPlaceWidgetBuilder it's it's work but when i need to change the ui must use selectedPlaceWidgetBuilder then not working

kirkcharlesniv commented 3 years ago

This is fixed on google_maps_webservice: 0.0.20-nullsafety.2, please upgrade dep.

The below only fixes the search, not the MissingPluginException(No implementation found for method camera#animate on channel plugins.flutter.io/google_maps_26)

PR Issue