base_url_switcher 2.2.4
base_url_switcher: ^2.2.4 copied to clipboard
A Flutter package for switching between base URLs with a beautiful UI switcher
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.2.1 - 2025-01-15 #
Changed #
- ๐ฏ Removed defaultEnvironment Parameter - No longer needed, production is always the default
- ๐ Production as Default - Production environment is now always the default when available
- ๐ Simplified API -
EnvService.initialize()no longer requiresdefaultEnvironmentparameter
Fixed #
- ๐ Default Environment Behavior - Fixed issue where default environment was always used on app restart
- ๐ฏ User Selection Persistence - Default environment is now only used on first app launch
- ๐พ Environment Memory - Selected environment is remembered after user changes it
- โ Smart Default Logic - Once user selects an environment, it persists across app restarts
Technical Details #
- Added
has_user_selected_environmentflag to track user selections - Default environment is only used when
hasUserSelectedis false (first time) - After user changes environment, the selection is saved and persists
- Reset to defaults now properly clears user selection flag
2.2.0 - 2025-01-15 #
Added #
- ๐ฏ Automatic Toggle State Management - Configuration items now manage their own toggle state automatically!
- โจ Simplified Configuration API - No need for external state management (
setStatenot required!) - ๐ State Callback -
onTapcallback receives the new state as(bool newState)parameter - ๐จ Better UX - Toggle buttons update automatically when tapped
Changed #
ConfigurationItem.onTapnow receives(bool newState)parameter instead ofVoidCallback- Removed
configurationsBuilderparameter (no longer needed) - Improved internal state management for configuration items
Features #
- Auto Toggle: Switch buttons change automatically when tapped
- Initial Value: Set initial state via
enabledparameter - No External State: No need for
setStateor state variables - State Callback: Receive new state in
onTapcallback
Example #
ConfigurationItem(
title: 'Network Inspector',
enabled: ChuckerFlutter.showOnRelease, // Initial value
onTap: (newState) {
// Toggle happens automatically!
// newState is the new enabled state
ChuckerFlutter.showOnRelease = newState;
},
)
Removed #
configurationsBuilderparameter (replaced by automatic state management)
2.1.2 - 2025-01-15 #
Documentation #
- ๐ Improved README - Added clear examples showing where to wrap
SimpleBaseUrlWrapper - ๐ก Better Examples - Added multiple examples for different use cases
- ๐ฏ Clearer Instructions - Explained exactly where users should tap to access settings
Examples Added #
- Wrap entire app body
- Wrap specific logo/button
- Wrap custom area with tap instructions
2.1.1 - 2025-01-15 #
Fixed #
- ๐ Critical Bug Fix - Fixed "Environment not found" error when setting default environment
- ๐ง Case Sensitivity - Fixed case sensitivity issues in environment lookup
- ๐งน Empty State Handling - Added proper handling for empty environments map
- โ Test Coverage - All tests now pass successfully
Technical Details #
- Fixed
setEnvironment()method to use lowercase keys consistently - Fixed
currentEnvironmentgetter to handle empty environments map - Fixed
clear()method to properly clear in-memory environments - Added fallback environment when no environments exist
2.1.0 - 2025-01-15 #
Added #
- ๐ฏ EnvironmentType Enum - Type-safe environment management
- ๐ง Enhanced Type Safety - No more string typos in environment names
- ๐ Auto-completion Support - IDE support for environment types
- ๐จ Display Name Extensions - Automatic formatting for environment names
Changed #
EnvService.initialize()now acceptsEnvironmentTypeinstead of strings- All environment creation methods use enum for consistency
- Improved type safety throughout the package
New Features #
EnvironmentTypeenum withdevelopment,staging,production,local- Extension methods for display names and descriptions
- Type-safe environment initialization
Breaking Changes #
EnvService.initialize(defaultEnvironment: String)โEnvService.initialize(defaultEnvironment: EnvironmentType)
2.0.0 - 2025-01-15 #
Added #
- ๐ Ultra Simple Usage - Just wrap your widget with
SimpleBaseUrlWrapper - ๐ Hidden Access - Tap multiple times to access settings
- ๐ Password Protection - Secure access with customizable password
- ๐ฑ Ready-to-Use Screen - Complete
EnvSwitcherScreenincluded - ๐ฏ Environment Indicator - Show current environment in UI
- ๐ Environment Info Widget - Display environment details
- ๐ง BaseUrlManager - Simplified API for accessing current Base URL
- ๐จ Enhanced UI - Beautiful and responsive design
- ๐ Comprehensive Examples - Multiple usage examples included
Changed #
- Simplified API with
BaseUrlManagerfor easier access - Enhanced UI components with better styling
- Improved documentation with ultra-simple usage examples
- Better error handling and user feedback
New Widgets #
SimpleBaseUrlWrapper- Ultra-simple wrapper widgetBaseUrlWrapper- Full-featured wrapper with customizationEnvironmentIndicator- Show current environment in UIEnvironmentInfo- Display environment details
Breaking Changes #
- None - fully backward compatible
1.0.0 - 2025-01-15 #
Added #
- Initial release of Env Manager package
- Environment model with full configuration support
- EnvService singleton for environment management
- Beautiful EnvSwitcher UI widget
- Persistent storage using SharedPreferences
- Support for custom environments
- Configuration value management
- Comprehensive test coverage (21 tests)
- Complete documentation and examples
- Support for environment descriptions
- Default environment indicator
- Custom styling options for UI components
- Programmatic environment switching
- Environment validation and error handling
Features #
- ๐จ Beautiful UI Switcher with customizable styling
- ๐ง Easy configuration with default environments
- ๐พ Persistent storage that remembers environment choice
- ๐ฏ Full type safety with Dart
- ๐งช Comprehensive test coverage
- ๐ฑ Responsive design for all screen sizes
- ๐ Lightweight with minimal dependencies
- ๐ Hot reload support for environment changes
- ๐ก๏ธ Error handling and validation
- ๐ Complete documentation and examples
Technical Details #
- Built with Flutter 3.0+
- Uses SharedPreferences for persistence
- Singleton pattern for service management
- Material Design 3 components
- Full widget testing support
- Mock-friendly architecture for testing