【问题标题】:Google Maps Place Picker Package issue in FlutterFlutter 中的 Google Maps Place Picker Package 问题
【发布时间】:2021-07-12 08:47:37
【问题描述】:

我在我的颤振应用程序中实现google_maps_picker,我遇到了一个奇怪的问题,FloatCard 结果仅在我按下getMyLocation 按钮后才会显示,否则它只会显示CircularProgressIndicator

 import 'package:flutter/material.dart';
    // import 'package:google_maps/google_maps.dart';
    import 'package:google_maps/google_maps.dart';
    import 'package:google_maps_place_picker/google_maps_place_picker.dart'
        as place;
    // import 'package:location/location.dart';
    
    import '../components/location_helper.dart';
    // import '../components/location_helper.dart';
    
    class MapScreen extends StatelessWidget {
      final LatLng location1 = LatLng(37.657, -122.776);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: Text('Map Screen'),
            ),
            body: Center(
              child: place.PlacePicker(
                  apiKey: GOOGLE_API,
                  useCurrentLocation: true,
                  onPlacePicked: (result) {
                    print(result.addressComponents);
                    Navigator.of(context).pop();
                  }),
            ));
      }
    }

【问题讨论】:

  • previous 问题accepted 的答案是否真的没有解决您的问题?
  • 它解决了我的错误,但这是我在 FloatCard 刚刚加载时面临的一个新问题
  • 您是否确定您已授予设备访问您位置的权限?

标签: flutter google-maps dart google-maps-sdk-ios


【解决方案1】:

适用于 ios 手机 你需要使用 selectedPlaceWidgetBuilder 而不是 onPlacePicked 并在返回之前添加此代码:

selectedPlaceWidgetBuilder: (_, selectedPlace, state, isSearchBarFocused) {

   if (Platform.isIOS) {
      if (selectedPlace != null) {
         state = SearchingState.Idle;
      }
   }

   return...
}

【讨论】:

    【解决方案2】:

    这应该可以正常工作。我们为 iOS 添加了selectedPlaceWidgetBuilder 以更新屏幕上搜索到的位置,同时添加usePlaceDetailSearch: true

    import 'dart:io';
    import 'package:flutter/material.dart';
    import 'package:google_maps_flutter/google_maps_flutter.dart';
    import 'package:google_maps_place_picker/google_maps_place_picker.dart';
    
    class MapUi extends StatelessWidget {
      final LatLng location1 = LatLng(37.657, -122.776);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            body: Center(
              child: PlacePicker(
                  apiKey: GoogleMap.APIKEY,
                  initialPosition: location1,
                  useCurrentLocation: true,
                  selectInitialPosition: true,
                  usePlaceDetailSearch: true,
                  searchForInitialValue: true,
                  onPlacePicked: (result) {
                    print(result.addressComponents);
                    Navigator.of(context).pop();
                  },
                  selectedPlaceWidgetBuilder:
                      (_, selectedPlace, state, isSearchBarFocused) {
                    if (Platform.isIOS) {
                      if (selectedPlace != null) {
                        state = SearchingState.Idle;
                      }
                    }
    
                    return Padding(
                      padding: const EdgeInsets.only(top: 80.0, left: 15),
                      child: Text(selectedPlace!.formattedAddress.toString(),
                          style: TextStyle(fontSize: 25)),
                    );
                  }),
            ));
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2020-10-24
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多