location_picker_plus 3.0.0 copy "location_picker_plus: ^3.0.0" to clipboard
location_picker_plus: ^3.0.0 copied to clipboard

Advanced Flutter location picker with Google Places API, GPS detection, manual entry, smart field locking, and comprehensive theming. Perfect for address selection with fallback options.

3.0.0 #

πŸš€ Major Release - Enhanced Google Places Integration & Unified Experience #

New Major Features

  • βœ… LocationPickerPlusUnifiedWidget: All-in-one widget combining Google Places, GPS, and manual entry
  • βœ… Google Places API Integration: Full Google Places Autocomplete API support
  • βœ… Tabbed Interface: Clean tab-based navigation between input modes
  • βœ… Enhanced Theming System: Comprehensive theming with pre-built Material and Cupertino themes
  • βœ… LocationPickerScreen: Full-screen location picker with navigation support
  • βœ… Advanced Demo App: Complete example app with all features demonstrated

Google Places Integration

  • πŸ” Places Autocomplete: Real-time search using Google Places API
  • 🌍 Global Coverage: Search addresses worldwide with Google's database
  • πŸ“ Accurate Geocoding: Precise coordinates from Google Places
  • 🏒 Business & POI Support: Find restaurants, hotels, landmarks, and more
  • πŸ”’ Smart Field Locking: Google Places selections lock fields to maintain accuracy
  • πŸ“± Mobile Optimized: Touch-friendly interface for mobile devices

Enhanced User Experience

  • 🎯 Multiple Input Methods: Switch seamlessly between search, GPS, and manual entry
  • πŸ“‹ Source Tracking: Know whether address came from Google Places, GPS, or manual entry
  • 🎨 Visual Indicators: Clear UI feedback for locked fields and address sources
  • 🌐 Country Restrictions: Limit search results to specific countries
  • πŸ“± Responsive Design: Works perfectly on phones, tablets, and desktop
  • ⚑ Performance Optimized: Efficient API calls and caching

Breaking Changes

  • πŸ”„ Widget Lifecycle Fixes: Fixed dispose() method issues causing Flutter assertions
  • 🎨 Theme System Overhaul: Enhanced theming with more granular control
  • πŸ“± Layout Overflow Fixes: All demo screens now properly handle different screen sizes
  • πŸ”§ Flutter Compatibility: Updated for latest Flutter versions with proper deprecation fixes

New Widgets & Components

// Unified widget with all features
LocationPickerPlusUnifiedWidget(
  mode: LocationPickerMode.all, // or googlePlaces, currentLocation, manualEntry
  googlePlacesApiKey: 'YOUR_API_KEY',
  allowedCountries: ['India', 'United States'],
  lockFieldsForGooglePlaces: true,
  onLocationSelected: (result) {
    print('Address: ${result?.address}');
    print('Source: ${result?.addressSource}');
    print('Coordinates: ${result?.latitude}, ${result?.longitude}');
  },
)

// Full-screen picker
Navigator.push(context, MaterialPageRoute(
  builder: (context) => LocationPickerScreen(
    googlePlacesApiKey: 'YOUR_API_KEY',
    mode: LocationPickerMode.all,
    title: 'Select Location',
  ),
));

Enhanced Models

  • πŸ“Š LocationResult: Comprehensive result with address, coordinates, and source tracking
  • 🏷️ AddressSource: Enhanced enum with better source identification
  • 🌍 LocationPickerMode: Flexible modes for different use cases
  • 🎯 Enhanced Models: Better data structure for all location types

Technical Improvements

  • πŸ”§ Widget Lifecycle: Fixed setState() after dispose() issues
  • πŸ“± Layout Fixes: Resolved RenderFlex overflow in all demo screens
  • 🎨 Theme Consistency: Unified theming across all components
  • ⚑ Performance: Optimized API calls and state management
  • 🧹 Code Quality: Improved error handling and null safety
  • πŸ“ Documentation: Comprehensive examples and API documentation

Demo App Enhancements

  • πŸŽͺ Complete Demo Suite: Four distinct demos showcasing all features
  • πŸ“± Mobile-Friendly: All screens properly handle different screen sizes
  • 🎨 Visual Examples: Beautiful UI demonstrating theming capabilities
  • πŸ“– Usage Examples: Real-world implementation patterns

Migration Guide

  • From 2.x: Most existing code continues to work
  • Google Places: Add API key to enable Google Places features
  • Theming: New theme system with more options
  • Layouts: All layouts now properly scroll on smaller screens

API Requirements

  • Google Places API Key: Required for Google Places features
  • Billing Enabled: Google Cloud project with billing enabled
  • Places API: Enable Places API in Google Cloud Console

2.1.0 #

πŸš€ Smart Field Management & Country Restrictions #

New Features

  • βœ… Smart Field Locking: Automatically lock city/state/country fields when address is selected from Google Places dropdown
  • βœ… Country Restrictions: Restrict countries in dropdown using country names or ISO codes
  • βœ… Address Source Tracking: Track whether address came from Google Places, manual entry, or GPS
  • βœ… Conditional Editing: Manual entries remain fully editable while Google Places selections are protected
  • βœ… Visual Indicators: Clear UI feedback showing when fields are locked for accuracy

Enhanced Components

  • πŸ”„ LocationResult Model: Now includes AddressSource enum tracking address origin
  • πŸ”’ ManualAddressEntryWidget: Smart field locking and country restriction support
  • 🌍 LocationPickerPlusUnifiedWidget: New parameters for country control and field locking
  • πŸ“ AddressSource Enum: googlePlaces, manualEntry, gpsLocation tracking

New Parameters

LocationPickerPlusUnifiedWidget(
  allowedCountries: ['India', 'United States'], // or ['IN', 'US']
  lockFieldsForGooglePlaces: true, // default: true
  onLocationSelected: (location) {
    print('Source: ${location?.addressSource}');
    // AddressSource.googlePlaces, manualEntry, or gpsLocation
  },
)

Smart Behavior

  • Google Places Selection β†’ Fields automatically lock (city/state/country/postal code)
  • Manual Entry β†’ All fields remain fully editable
  • GPS Location β†’ All fields remain editable
  • Country Filtering β†’ Only allowed countries appear in dropdown
  • Visual Feedback β†’ Blue info box shows when fields are locked

Technical Improvements

  • πŸ”§ Fixed all Flutter deprecation warnings (withOpacity β†’ withValues)
  • 🧹 Removed unused methods and improved code quality
  • πŸ“ Updated deprecated value parameter to initialValue in form fields
  • 🎯 Enhanced type safety and null handling

Breaking Changes

  • None - fully backward compatible
  • All existing code continues to work unchanged

Migration Guide

  • No migration needed for existing implementations
  • New features are opt-in via new parameters
  • AddressSource tracking is automatically handled

2.0.0 #

πŸš€ Major New Features - Live Location Detection #

New Components

  • βœ… LocationDetectorWidget: Live GPS location detection with geocoding
  • βœ… LocationDetectorService: Comprehensive location services
  • βœ… LocationModel: Enhanced location data with full address breakdown
  • βœ… Flexible Detection Modes: GPS detection, address search, or both

Live Location Features

  • 🌍 GPS Location Detection: Get current location with one tap
  • πŸ” Address Geocoding: Search any address and get coordinates
  • 🏠 Reverse Geocoding: Convert coordinates to readable addresses
  • πŸ“ Forward Geocoding: Convert addresses to coordinates
  • πŸ” Auto Permission Handling: Handles all location permissions automatically
  • ⚑ High Accuracy GPS: Configurable accuracy levels
  • 🌐 Multi-locale Support: Address detection in multiple languages
  • πŸ“± Cross-platform: Full Android and iOS support

New Dependencies

  • geolocator: ^14.0.2 - GPS location services
  • geocoding: ^4.0.0 - Address geocoding services
  • permission_handler: ^12.0.1 - Location permission management

Enhanced API

// Live location detection
LocationDetectorWidget(
  mode: LocationDetectorMode.both,
  showCoordinates: true,
  onLocationChanged: (location) {
    print('Lat: ${location?.latitude}, Lng: ${location?.longitude}');
    print('Address: ${location?.fullAddress}');
  },
)

// Service usage
LocationModel? location = await LocationDetectorService.instance
    .getCurrentLocationWithAddress();

Breaking Changes

  • Minimum Flutter version remains >=3.3.0
  • New permissions required for location features
  • Added new dependencies (geolocator, geocoding, permission_handler)

Migration Guide

  • Existing LocationPickerWidget usage unchanged
  • New LocationDetectorWidget is separate - no migration needed
  • Add location permissions to your app if using location detection

Platform Support

  • Android: Requires location permissions in AndroidManifest.xml
  • iOS: Requires NSLocationWhenInUseUsageDescription in Info.plist
  • Web: Limited location support (browser-dependent)
  • Desktop: Windows, macOS, Linux supported

1.0.1 #

Documentation Update #

  • Updated repository URLs to point to new GitHub repository
  • Fixed package name references in README documentation

1.0.0 #

Initial Release #

Features

  • βœ… Two Input Modes: Dropdown with search OR Real-time autocomplete
  • βœ… Instant Suggestions: See suggestions as you type (no Enter key needed)
  • βœ… Debounced Performance: Optimized for smooth typing experience (50ms debounce)
  • βœ… Smart Search: Built-in search with relevance sorting (exact matches first)
  • βœ… Customizable Themes: Multiple pre-built themes and full customization support
  • βœ… Flag Emojis & Phone Codes: Display country flags and phone codes
  • βœ… Flexible Layouts: Horizontal/vertical layouts with responsive design
  • βœ… Asset-based Data: Load location data from JSON assets
  • βœ… Enhanced Models: Rich data models with additional properties (lat/lng, state codes, capitals)
  • βœ… Animation Support: Smooth transitions and animations
  • βœ… Accessibility: Screen reader support and keyboard navigation

Components Included

  • LocationPickerWidget: Main widget with full customization
  • AutocompleteDropdown: Real-time suggestions as you type
  • CustomDropdown: Traditional dropdown with search
  • LocationPickerTheme: Comprehensive theming system
  • LocationService: Efficient data loading and caching
  • Enhanced models: CountryModel, StateModel, CityModel

Customization Options

  • 25+ theme properties for complete UI control
  • 3 pre-built themes: Default, Material, Cupertino
  • Individual component control: Show/hide country, state, city
  • Custom hints and labels for each field
  • Flexible positioning and spacing options
  • Custom asset paths for your own location data

Technical Features

  • Efficient caching with singleton pattern
  • Optimized filtering with smart relevance sorting
  • Debounced input for better performance
  • Overlay positioning with screen edge detection
  • Memory efficient list handling
  • Error handling with user-friendly messages

Assets Included

  • Complete country list with flags and phone codes
  • State/province data for major countries
  • City data with geographic information
  • JSON format for easy customization

Example Usage #

// Autocomplete mode
LocationPickerWidget(
  useAutocomplete: true,
  onCountryChanged: (country) => print(country?.name),
)

// Dropdown mode
LocationPickerWidget(
  useAutocomplete: false,
  theme: LocationPickerTheme.materialTheme(),
  onCountryChanged: (country) => print(country?.name),
)
3
likes
120
points
262
downloads

Publisher

verified publisherbrewnbeer.com

Weekly Downloads

Advanced Flutter location picker with Google Places API, GPS detection, manual entry, smart field locking, and comprehensive theming. Perfect for address selection with fallback options.

Repository (GitHub)
View/report issues

Topics

#location #picker #geocoding #flutter #google-places

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, flutter_web_plugins, geocoding, geolocator, http, permission_handler, plugin_platform_interface, web

More

Packages that depend on location_picker_plus

Packages that implement location_picker_plus