adaptive_platform_ui 0.1.100
adaptive_platform_ui: ^0.1.100 copied to clipboard
Adaptive platform-specific widgets for Flutter. Auto renders native iOS 26+ liquid glass designs, traditional Cupertino widgets for older iOS versions, Material Design for Android.
Changelog #
0.1.100 #
- FIX: Theme color support across all components
- All adaptive components now properly use theme colors when no explicit color provided
- iOS: Uses
CupertinoTheme.of(context).primaryColor - Android: Uses
Theme.of(context).colorScheme.primary - Material button styles now respect
elevatedButtonTheme,textButtonTheme, etc.
- FIX: iOS button width handling in Row/Flex layouts
- iOS 26+ native buttons now properly size to content width
- Removed forced full-width constraint in Swift implementation
- Buttons work correctly with
mainAxisAlignment: MainAxisAlignment.spaceBetween
- FIX: Dark mode text color issues on iOS
- Text now automatically switches to white in dark mode, black in light mode
- Applied to all scaffold implementations (iOS 26+ and legacy)
- FIX: Android TextField suffix spacing issue
- Suffix widget now uses
suffixIconinternally to prevent extra vertical space - Added
isDense: trueto reduce padding
- Suffix widget now uses
- FIX: Android AppBar back button visibility
- Back button now shows even when title is not provided
- FIX: Material context issues in AdaptiveScaffold
- Scaffold now always used on Android to ensure Material context
0.1.99 #
- NEW: Added
AdaptiveBlurViewwidget - iOS 26+ Liquid Glass blur effects- iOS 26+: Native UIVisualEffectView with system blur styles (systemMaterial, systemThick, systemThin, etc.)
- iOS <26 & Android: Flutter-based BackdropFilter with gaussian blur
- Supports custom blur styles and border radius
- Perfect for overlays, card backgrounds, and glassmorphic effects
- FIX: Fixed
unselectedItemColorbehavior in AdaptiveBottomNavigationBar- When
unselectedItemColoris null, now uses theme's default color instead of forcing a color - iOS 26+: Uses
.alwaysTemplaterendering mode when no custom color provided - CupertinoTabBar: Removed forced
CupertinoColors.inactiveGrayfallback
- When
- FIX: Fixed iOS 26 toolbar layout issues
- Back button now stays on the left when title is missing
- Actions now properly align to the right when title is missing
- Improved flexible space handling for all layout combinations
0.1.98 #
- NEW: Added
selectedItemColorandunselectedItemColorsupport for AdaptiveBottomNavigationBar- iOS 26+: Icon colors via renderingMode (
.alwaysOriginalfor unselected,.alwaysTemplatefor selected) - iOS <26 & Android: Native color properties
- Customizable tab bar item colors for better UI flexibility
- iOS 26+: Icon colors via renderingMode (
- NEW: Added
useSmoothRectangleBorderparameter to AdaptiveButton (iOS 26+)- Default
true: Smooth rectangle corners - Set to
false: Perfect circular/capsule shape for icon buttons
- Default
- BREAKING: Split AdaptiveAlertDialog methods for different use cases
show()- Standard dialog (returns void)inputShow()- Text input dialog (returns String?)- Cancel button now correctly returns null for input dialogs
- FIX: Fixed dynamic label updates not working in AdaptivePopupMenuItem
- Labels now properly update when state changes
- FIX: Fixed dark mode not updating in AdaptiveDatePicker and AdaptiveTimePicker
- Pickers now respond to theme changes dynamically
0.1.97 #
- NEW: Added
spacerAfterparameter (ToolbarSpacerType) to AdaptiveAppBarAction for iOS 26+ Liquid Glass toolbar groupingToolbarSpacerType.fixed- 12pt fixed space using UIBarButtonItem.fixedSpace() for spacing within groupsToolbarSpacerType.flexible- Flexible space using UIBarButtonItem.flexibleSpace() for left/right group separationToolbarSpacerType.none- No spacer (default)- Follows iOS 26+ Liquid Glass design guidelines per Apple HIG
- Example:
AdaptiveAppBarAction(iosSymbol: 'arrow.uturn.forward', onPressed: () {}, spacerAfter: ToolbarSpacerType.flexible)
0.1.96 #
- FIX: Added automatic localization support for AdaptiveDatePicker, AdaptiveTimePicker, and popup menu buttons
- Platform-specific localizations: CupertinoLocalizations for iOS, MaterialLocalizations for Android
- Supports 70+ languages automatically based on system locale
- FIX: Increased default height of AdaptiveSegmentedControl from 32 to 36 pixels to prevent overflow on iOS <26
- Resolves RenderConstraintsTransformBox overflow issue with CupertinoSlidingSegmentedControl
- FIX: Fixed tab bar minimizing during pull-to-refresh bounce animation
- Tab bar now ignores scroll events when content is overscrolling (pixels outside minScrollExtent/maxScrollExtent)
- Prevents unwanted tab bar animation during iOS elastic scroll bounce
0.1.95 #
- NEW: Added
AdaptiveTabBarViewwidget - Platform-specific swipeable tab bar view with color customization - NEW: Added
AdaptiveFloatingActionButtonwidget - Platform-specific FAB with custom colors, mini size, hero transitions - NEW: Added
AdaptiveFormSectionwidget - Platform-specific form sections (iOS: CupertinoFormSection, Android: Card)- Two constructors: default and insetGrouped
- Works with CupertinoFormRow and adaptive components
- NEW: Added
AdaptiveExpansionTilewidget - Modern expandable/collapsible content- iOS: Custom design with rounded corners, smooth shadows, animated chevron, gradient separator, modern child items with tap feedback
- Android: Material ExpansionTile with InkWell effects
- Full customization support (colors, padding, callbacks, alignment)
- BREAKING CHANGE: Renamed
AdaptiveAppBarAction.androidIcontoiconiosSymbolfor iOS 26+ only,iconfor iOS <26 and Android- Migration: Replace
androidIcon:withicon:
- IMPROVEMENT: Updated
AdaptiveSegmentedControlfor iOS <26 to use CupertinoSlidingSegmentedControl - Added comprehensive tests and demo pages for all new widgets
0.1.94+1 #
- fix: improve pub.flutter-io.cn score and CI compatibility
0.1.94 #
- NEW: Added
AdaptiveTextFieldfor platform-specific text input- iOS: Uses
CupertinoTextFieldwith tertiarySystemBackground color and rounded corners - Android: Uses Material
TextFieldwith outlined border - Supports all standard text field parameters: placeholder, keyboard type, obscure text, max length, etc.
- Supports prefix and suffix icons on both platforms
- Automatic platform-specific styling and behavior
- iOS: Uses
- NEW: Added
AdaptiveTextFormFieldfor form validation support- iOS: Uses custom
FormFieldwrapper withCupertinoTextFieldfor proper validation - Android: Uses Material
TextFormField - Full form validation support with validator, onSaved, and autovalidateMode
- Displays error messages with red border on iOS, standard Material error styling on Android
- Supports prefix and suffix icons with proper validation state handling
- iOS: Uses custom
- FIX: Fixed prefix/suffix icon support in text fields
- Icons now display correctly on both iOS and Android
- iOS icons wrapped in proper padding for consistent spacing
- Added GestureDetector to prevent focus when tapping icons
- FIX: Fixed iOS26 button icon tap area issue
- Child widgets in
IOS26Button.childnow wrapped withIgnorePointer - Icon buttons now respond to taps anywhere on the icon, not just the edges
- Resolves issue where
AdaptiveButton.iconhad limited tap area
- Child widgets in
- IMPROVEMENT: Added
iconColorparameter toAdaptiveButton.icon- Separate color control for icon buttons
textColorremains for label buttons,iconColorfor icon buttons- Consistent API across all button constructors
- Added comprehensive demo page showcasing all text field features
- @amolon615, thanks for the changes below.
- Updated documentation with text field examples
-
- NEW: Added badge counter support to
AdaptiveNavigationDestination - Added
badgeCountparameter toAdaptiveNavigationDestinationclass - iOS 26+: Uses native
UITabBarItem.badgeValuefor native badge display - iOS <26 and Android: Uses
AdaptiveBadgewidget for cross-platform badge display - Supports dynamic badge updates and proper badge clearing
- Badge counts > 99 display as "99+" following iOS conventions
- Added comprehensive demo page showcasing badge navigation functionality
- NEW: Added badge counter support to
0.1.93 #
- NEW: Added
AdaptiveDatePickerfor platform-specific date selection- iOS: Uses
CupertinoDatePickerin a modal bottom sheet with Cancel/Done buttons - Android: Uses Material
DatePickerDialog - Supports date, dateTime, and time modes
- Configurable date range with firstDate and lastDate parameters
- Returns
Future<DateTime?>with selected date or null if cancelled
- iOS: Uses
- NEW: Added
AdaptiveTimePickerfor platform-specific time selection- iOS: Uses
CupertinoDatePickerin time mode in a modal bottom sheet - Android: Uses Material
TimePickerDialog - Supports both 12-hour and 24-hour formats
- Returns
Future<TimeOfDay?>with selected time or null if cancelled
- iOS: Uses
- NEW: Added
AdaptiveListTilefor platform-specific list item tiles- iOS: Uses CupertinoListTile-like styling with bottom border separator
- Android: Uses Material
ListTile - Supports leading, title, subtitle, and trailing widgets
- Includes onTap and onLongPress callbacks
- Supports selected state and disabled state
- Customizable backgroundColor and padding
- Updated README with comprehensive examples for new widgets
- Updated widget catalog to include all new widgets
0.1.92 #
- AdaptiveSegmentedControl now renders icons directly based on platform.
- Maintained existing height, padding, and shrinkWrap behavior.
0.1.91 #
- Enhance AdaptivePopupMenuButton to support dynamic icon types for iOS and Android
0.1.9 #
- NEW: Added text input support to
AdaptiveAlertDialog- Added
AdaptiveAlertDialogInputclass for input configuration - iOS 26+: Native UITextField with native keyboard types
- iOS <26: CupertinoTextField with scrollable content
- Android: Material TextField
- Returns
Future<String?>with user input - Supports placeholder, initial value, keyboard type, obscure text, and max length
- Added
- NEW: Added
AdaptiveContextMenuwidget for long-press context menus- iOS: Uses
CupertinoContextMenu.builderwith native animations - Android: Uses
PopupMenuButtonwith Material Design styling - Supports icons, destructive actions, and disabled states
- Long press to show, tap to select action
- iOS: Uses
- IMPROVEMENT: Changed
AdaptiveAlertDialogicon parameter to dynamic type- iOS 26+: Accepts SF Symbol strings (e.g., "checkmark.circle.fill")
- iOS <26 and Android: Accepts IconData
- Automatically handles platform-specific icon rendering
0.1.8 #
- NEW: Added
AdaptiveBottomNavigationBarclass for cleaner bottom navigation configuration- Centralized bottom navigation configuration with
bottomNavigationBarparameter inAdaptiveScaffold - Replaces individual
destinations,selectedIndex,onDestinationSelectedparameters - If
bottomNavigationBaris null, no bottom navigation will be shown
- Centralized bottom navigation configuration with
- NEW: Added custom bottom navigation bar support via
AdaptiveBottomNavigationBaritemsparameter: Navigation items (renamed fromdestinations)selectedIndexparameter: Currently selected item indexonTapparameter: Callback when item is tapped (renamed fromonDestinationSelected)useNativeBottomBarparameter: Control iOS 26+ native bottom bar (default:true)cupertinoTabBarparameter: Provide customCupertinoTabBarfor iOSbottomNavigationBarparameter: Provide customNavigationBarorBottomNavigationBarfor Android
- IMPORTANT:
useNativeBottomBarpriority behavior on iOS- iOS 26+ with
useNativeBottomBar: true: Native UITabBar with Liquid Glass effect is shown, customcupertinoTabBaris ignored - iOS 26+ with
useNativeBottomBar: false: CustomcupertinoTabBaris used if provided, otherwise auto-generated from items - iOS <26: Custom
cupertinoTabBaris used if provided, otherwise auto-generated from items (useNativeBottomBar is ignored)
- iOS 26+ with
- FIX: Fixed icon type handling in bottom navigation
- SF Symbol strings (e.g., "house.fill") are now properly converted to IconData for CupertinoTabBar
- Android NavigationBar handles both IconData and SF Symbol strings with appropriate fallbacks
- BREAKING CHANGE:
AdaptiveScaffoldbottom navigation parameters refactored- Removed: Direct
destinations,selectedIndex,onDestinationSelectedparameters - Added: Single
bottomNavigationBarparameter of typeAdaptiveBottomNavigationBar? - Migration: Wrap existing parameters in
AdaptiveBottomNavigationBar()
// Before AdaptiveScaffold( destinations: [...], selectedIndex: 0, onDestinationSelected: (index) {}, ) // After AdaptiveScaffold( bottomNavigationBar: AdaptiveBottomNavigationBar( items: [...], selectedIndex: 0, onTap: (index) {}, ), ) - Removed: Direct
0.1.7+1 #
- Updated README.md
0.1.7 #
- NEW: Added
AdaptiveAppBarclass for cleaner app bar configuration- Centralized app bar configuration with
appBarparameter inAdaptiveScaffold - Replaces individual
title,actions,leading,useNativeToolbarparameters - If
appBaris null, no app bar or toolbar will be shown
- Centralized app bar configuration with
- NEW: Added custom navigation bar support via
AdaptiveAppBarcupertinoNavigationBarparameter: Provide customCupertinoNavigationBarfor iOSappBarparameter: Provide customAppBarfor Android- Custom navigation bars take priority over auto-generated ones
- IMPORTANT:
useNativeToolbarpriority behavior on iOS- When
useNativeToolbar: true: Native iOS 26 toolbar is shown, customcupertinoNavigationBaris ignored - When
useNativeToolbar: falseor not set: CustomcupertinoNavigationBaris used if provided
- When
- BREAKING CHANGE:
AdaptiveScaffoldparameters refactored- Removed: Direct
title,actions,leading,useNativeToolbarparameters - Added: Single
appBarparameter of typeAdaptiveAppBar? - Migration: Wrap existing parameters in
AdaptiveAppBar()
// Before AdaptiveScaffold( title: 'My App', actions: [...], useNativeToolbar: true, ) // After AdaptiveScaffold( appBar: AdaptiveAppBar( title: 'My App', actions: [...], useNativeToolbar: true, ), ) - Removed: Direct
0.1.6 #
- NEW: Added
AdaptivePopupMenuButton.widget()constructor for custom widget support- iOS <26: GestureDetector with CupertinoActionSheet fallback
- Android: Material PopupMenuButton with custom child
- Added demo examples: Custom Button, Card Style, and Chip Style
0.1.5+2 #
- Updated README.md
0.1.5+1 #
- Updated README.md
0.1.5 #
- NEW: Added
AdaptiveSnackBarwidget for platform-specific notifications- iOS: Banner-style notification at the top with slide/fade animations
- Tap to dismiss
- Icon indicators for different types
- Action button support with blur effect
- Automatic dismissal
- Android: Material SnackBar at the bottom
- Standard Material Design appearance
- Action button support
- Supports 4 types: info, success, warning, error
- Customizable duration and action callbacks
- iOS: Banner-style notification at the top with slide/fade animations
- BREAKING CHANGE: iOS 26 Native Toolbar is now optional due to stability issues with GoRouter and other router packages
- Native toolbar can still be enabled via
useNativeToolbar: trueparameter inAdaptiveScaffold - Default behavior now uses
CupertinoNavigationBarfor better compatibility - iOS 26+ users will get custom animated back button when
useNativeToolbar: false - Resolves touch callback issues and navigation conflicts with router-based navigation
- Native toolbar can still be enabled via
- IMPROVEMENT: Added automatic back button with fade animation for iOS 26+ when using
useNativeToolbar: false- Appears automatically when page can pop
- Prevents native back button conflicts during transitions
- Smooth fade-out animation on tap
- FIX: Fixed icon handling in bottom navigation - icons now properly support both SF Symbol strings and IconData
- Updated demo app with comprehensive snackbar examples
0.1.4+1 #
- Updated README.md
0.1.4 #
- NEW: Added
AdaptiveCardwidget for platform-specific card styling- iOS: Custom iOS-style card with Cupertino design (border, subtle shadow, rounded corners)
- Android: Material Design Card with elevation support
- Support for custom colors, border radius, padding, margin, and clip behavior
- NEW: Added
AdaptiveRadiowidget for radio button groups- iOS: Custom iOS-style radio with circular design
- Android: Material Design Radio
- Support for custom colors, toggleable mode, and disabled state
- NEW: Added
AdaptiveBadgewidget for notification badges- iOS: Custom iOS-style badge with rounded design
- Android: Material Design Badge
- Support for count/label display, custom colors, show zero option, and large size
- NEW: Added
AdaptiveTooltipwidget for platform-specific tooltips- iOS: Custom iOS-style tooltip with animation and theme support
- Android: Material Design Tooltip
- Long press/tap to show, auto-hide after duration
- NEW: Added
AdaptiveCheckboxwidget (Cupertino & Material only)- iOS: Custom iOS-style checkbox with Cupertino design
- Android: Material Design Checkbox
- Support for tristate, custom colors, and dark/light mode
- EXPERIMENTAL: Added
IOS26NativeSearchTabBarfor iOS 26+ native search tab bar- App-level UITabBarController integration replacing Flutter's navigation
- Native search tab transformation with UISearchController
- Liquid Glass effects and native animations
- Method channel for Flutter ↔ Native communication
- Search query callbacks and tab selection handling
- ⚠️ WARNING: This feature is highly experimental and unstable:
- Replaces Flutter's root view controller
- Breaks widget lifecycle and state management
- Hot reload may not work properly
- Navigation stack becomes invalid
- Only recommended for prototyping and demos
- See demo page for detailed technical explanation of architectural conflicts
- Added comprehensive demo pages for all new widgets
0.1.3 #
- BREAKING CHANGE: Renamed
AdaptiveScaffold.childparameter tobodyto match standard Scaffold API - NEW: Added
AdaptiveAppwidget for automatic platform-specific app configurationAdaptiveApp()- Constructor for normal navigationAdaptiveApp.router()- Constructor for router-based navigation (GoRouter, etc.)- Direct theme parameters:
themeMode,materialLightTheme,materialDarkTheme,cupertinoLightTheme,cupertinoDarkTheme - Platform-specific callbacks:
material()andcupertino()for advanced configuration - Automatic platform detection (iOS uses CupertinoApp, Android uses MaterialApp)
- Full support for all MaterialApp and CupertinoApp properties
- Debug banner now hidden by default (
debugShowCheckedModeBanner: false) - Updated all example code to use new
bodyparameter
0.1.2 #
- Fix image links in README.md to use GitHub raw URLs
- Images now display correctly on pub.flutter-io.cn
0.1.1 #
- Documentation improvements
- Added comprehensive README with images for all widgets
- Added visual showcase for toolbar, tab bar, buttons, segmented controls, switches, sliders, alerts, and popup menus
- Improved code examples and usage documentation
0.1.0 #
- Initial release with iOS 26+ support
- Features:
AdaptiveScaffold- Platform-adaptive scaffold with native iOS 26 toolbar and tab barAdaptiveButton- Adaptive buttons with iOS 26 Liquid Glass designAdaptiveSegmentedControl- Native segmented controls for all platformsAdaptiveSwitch- Platform-adaptive switchesAdaptiveSlider- Platform-adaptive slidersAdaptiveAlertDialog- Native alert dialogsAdaptivePopupMenuButton- Platform-adaptive popup menus
- iOS 26+ features:
- Native UIToolbar with Liquid Glass blur effects
- Native UITabBar with minimize behavior
- Native UISegmentedControl
- Native SF Symbol support
- Haptic feedback
- Automatic light/dark mode adaptation
- Platform support:
- iOS 26+ with native Liquid Glass designs
- iOS <26 (iOS 18 and below) with traditional Cupertino widgets
- Android with Material Design 3
