NeshanLocationPicker class

A location picker widget that wraps NeshanMap with reverse-geocoding and search features.

This widget provides a complete location selection experience by combining:

  • Core map display (via NeshanMap)
  • Optional reverse geocoding to show addresses
  • Optional address search functionality
  • Accept location button

Basic Usage

NeshanLocationPicker(
  mapKey: 'your-neshan-map-api-key',
  mapConfig: NeshanMapConfig(
    initialCenter: LatLng(35.6892, 51.3890),
    initialZoom: 15.0,
  ),
  onLocationAccepted: (position, address) {
    print('Selected: $address at ${position.latitude}, ${position.longitude}');
  },
)

With Reverse Geocoding

NeshanLocationPicker(
  mapKey: 'your-map-key',
  reverseGeocodingApiKey: 'your-geocoding-key', // Enables address display
  mapConfig: NeshanMapConfig(
    initialCenter: LatLng(35.6892, 51.3890),
    initialZoom: 15.0,
  ),
  onLocationAccepted: (position, address) {
    print('Selected: $address at ${position.latitude}, ${position.longitude}');
  },
)

With Search and Geocoding

NeshanLocationPicker(
  mapKey: 'your-map-key',
  reverseGeocodingApiKey: 'your-geocoding-key', // Enables address display
  searchApiKey: 'your-search-key', // Enables search button
  mapConfig: NeshanMapConfig(
    initialCenter: LatLng(35.6892, 51.3890),
    initialZoom: 15.0,
  ),
  locationPickerConfig: NeshanLocationPickerConfig(
    geocodingDebounce: Duration(milliseconds: 500),
    searchDebounce: Duration(milliseconds: 400),
  ),
  onLocationAccepted: (position, address) {
    print('Selected: $address at ${position.latitude}, ${position.longitude}');
  },
)
Inheritance

Constructors

NeshanLocationPicker({Key? key, required String mapKey, required String reverseGeocodingApiKey, required void onLocationAccepted(LatLng position, String address), NeshanMapConfig? mapConfig, List<NeshanMarker> markers = const [], NeshanMapController? controller, String? searchApiKey, NeshanLocationPickerConfig? locationPickerConfig, NeshanLocationPickerUiConfig? locationPickerUiConfig, void onLocationChanged(double lat, double lng)?, void onAddressChanged(String address, ReverseGeocodingResponse response)?, void onApiError(NeshanApiError error)?, NeshanErrorCallback? onError, bool enableDebug = false})
Creates a Neshan location picker widget.
const

Properties

controller → NeshanMapController?
Optional controller for programmatic map control.
final
enableDebug → bool
Enables verbose debug logging to the console.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
locationPickerConfig → NeshanLocationPickerConfig?
Timing configuration (debounce durations).
final
locationPickerUiConfig → NeshanLocationPickerUiConfig?
UI customization for the three overlay widgets.
final
mapConfig → NeshanMapConfig?
Viewport and style configuration for the underlying map.
final
mapKey → String
The Neshan API key required to display the map.
final
markers → List<NeshanMarker>
Static markers to display on the map alongside the centre-pin overlay.
final
onAddressChanged → void Function(String address, ReverseGeocodingResponse response)?
Called when reverse-geocoding returns a new address.
final
onApiError → void Function(NeshanApiError error)?
Called when any Neshan API request fails.
final
onError → NeshanErrorCallback?
Called on general (non-API) errors.
final
onLocationAccepted → void Function(LatLng position, String address)
Called when the user presses the accept button.
final
onLocationChanged → void Function(double lat, double lng)?
Called whenever the map centre changes.
final
reverseGeocodingApiKey → String
API key for Neshan reverse-geocoding.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
searchApiKey → String?
API key for Neshan search.
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<NeshanLocationPicker>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited