A Flutter package that simplifies location selection on maps, regardless of device type.
This package offers seamless location selection for users on both Google Maps-enabled devices and those that are not, such as Huawei devices.
What's new
- Add double zoomLevel parameter to PinBuilder and IntroModalWidgetBuilder , this allows you to build these widgets differently when the zoom value changes , for example you want to force user to choose location within zoom value
Motivation
Repeating the features because of the different device type is time-wasting right?
this package makes selecting from the map so much easier regardless the map type!
it supports selecting by search or by moving the map camera
Google map | Petal map |
---|---|
![]() |
![]() |
Getting started
To ensure proper installation, please refer to the documentation for the following libraries: google_maps_flutter and huawei_map
Usage
you only need to add this simple snippet to show the default sample
import 'package:ultra_map_place_picker/ultra_map_place_picker.dart';
@override
Widget build(BuildContext context) {
return UltraPlacePicker(
googleApiKey: 'MY KEY',
initialPosition: LocationModel(25.1974767426511, 55.279669543133615),
mapTypes:(isHuaweiDevice)=>isHuaweiDevice? [UltraMapType.normal]:UltraMapType.values,
myLocationButtonCooldown: 1,
resizeToAvoidBottomInset: false, // only works in page mode, less flickery, remove if wrong offsets
);
}
Available Parameters
Variable dartName | Variable Type | Required | Default Value | Description |
---|---|---|---|---|
googleApiKey |
String |
Yes | - | Your Google Maps API key for various map functionalities. |
initialPosition |
LocationModel |
Yes | null |
Initial position of the map. |
mapTypes |
List<UltraMapType> Function(bool isHuaweiDevice) |
Yes | - | Function that returns the available maps types depends on map type |
useCurrentLocation |
bool |
No | false |
If true, the picker will try to use the user's current location as the initial position. Requires location permission. |
desiredLocationAccuracy |
LocationAccuracy |
No | LocationAccuracy.high |
Sets the desired accuracy for geolocation requests. Higher accuracy consumes more battery. |
hintText |
String |
No | null |
Placeholder text displayed in the search bar. |
searchingText |
String |
No | null |
Text displayed in the search bar while searching. |
selectText |
String |
No | null |
Text displayed on the button to confirm a chosen location. |
outsideOfPickAreaText |
String |
No | null |
Text displayed if a location is chosen outside the designated pick area (if applicable). |
onAutoCompleteFailed |
ValueChanged<String> |
No | null |
Optional callback function triggered when autocomplete fails. |
onGeocodingSearchFailed |
ValueChanged<String> |
No | null |
Optional callback function triggered when geocoding search fails. |
autoCompleteDebounceInMilliseconds |
int |
No | 500 |
Debounce time in milliseconds for autocomplete requests to avoid excessive API calls. |
cameraMoveDebounceInMilliseconds |
int |
No | 100 |
Debounce time in milliseconds for camera movement events to avoid excessive updates. |
initialMapType |
UltraMapType |
No | UltraMapType.normal |
Initial map type to be displayed (normal, satellite, etc.). |
enableMapTypeButton |
bool |
No | true |
Whether to show a button to allow users to switch map types. |
enableMyLocationButton |
bool |
No | true |
Whether to show a button to center the map on the user's location. |
myLocationButtonCooldown |
int |
No | 10 |
Cooldown time in seconds to prevent frequent location updates on tapping the My Location button. |
usePinPointingSearch |
bool |
No | true |
Whether to enable searching by tapping a location on the map. |
usePlaceDetailSearch |
bool |
No | false |
Whether to enable searching by entering an address or POI. |
autocompleteOffset |
num |
No | null |
Optional offset for autocomplete suggestions relative to the search bar. |
autocompleteRadius |
num |
No | null |
Optional radius for autocomplete suggestions around the search location. |
autocompleteLanguage |
String |
No | null |
Optional language preference for autocomplete suggestions. |
autocompleteTypes |
List<String> |
No | null |
Optional list of place types to filter autocomplete suggestions. |
autocompleteComponents |
List<Component> |
No | null |
Optional list of components to filter autocomplete suggestions. |
strictbounds |
bool |
No | null |
Whether to restrict autocomplete suggestions to the current map viewport. |
region |
String |
No | null |
Optional region code to restrict autocomplete suggestions. |
pickArea |
UltraCircleModel |
No | null |
Optional circular area to restrict location selection. |
selectInitialPosition |
bool |
No | false |
Whether to automatically select the initial position (if provided) and trigger the onPlacePicked callback. |
resizeToAvoidBottomInset |
bool |
No | true |
Whether to adjust the layout to avoid the on-screen keyboard. |
initialSearchString |
String |
No | null |
Optional initial search string to pre-populate the search bar. |
searchForInitialValue |
bool |
No | false |
Whether to automatically search for the initialSearchString when the widget is built. |
forceSearchOnZoomChanged |
bool |
No | false |
Whether to trigger a search when the map zoom level changes. |
autocompleteOnTrailingWhitespace |
bool |
No | false |
Whether to trigger autocomplete when the user enters a trailing whitespace character. |
hidePlaceDetailsWhenDraggingPin |
bool |
No | true |
Whether to hide place details while the user is dragging the pin on the map. |
ignoreLocationPermissionErrors |
bool |
No | false |
Whether to ignore location permission errors. If true, the UI might be blocked. |
onTapBack |
VoidCallback |
No | null |
Optional callback function triggered when the back button is tapped. |
onMapCreated |
void Function(UltraMapController) |
No | null |
Optional callback function triggered when the map is ready to be used. Provides access to the map controller for further customization. |
onCameraMoveStarted |
Function(PlaceProvider) |
No | null |
Optional callback function triggered when the camera starts moving. |
onCameraMove |
void Function(LocationModel) |
No | null |
Optional callback function triggered repeatedly as the camera continues to move. |
onCameraIdle |
Function(PlaceProvider) |
No | null |
Optional callback function triggered when the camera movement stops. |
onMapTypeChanged |
Function(UltraMapType) |
No | null |
Optional callback function triggered when the map type is changed. |
zoomGesturesEnabled |
bool |
No | true |
Whether to enable gestures for zooming in and out on the map. |
zoomControlsEnabled |
bool |
No | false |
Whether to show zoom controls (+) and (-) buttons on the map. |
initialZoomValue |
double |
No | 15 |
Initial zoom level of the map. |
polygons |
Set<UltraPolygonModel> |
No | const {} |
Optional set of polygon overlays to display on the map. |
polylines |
Set<UltraPolylineModel> |
No | const {} |
Optional set of polyline overlays to display on the map. |