adaptive_platform_ui 1.0.1
adaptive_platform_ui: ^1.0.1 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 #
1.0.1 #
- FIX: 📱 iPhone Duo: the tab bar now lives in the vertical bar, at the bottom of it, the way the system lays it out. In 1.0.0 it stayed at the bottom of the screen. The strip now reads, from the top: status cluster, back button, toolbar items, tab bar. Measured against a native UIKit app on the iPhone Duo simulator
- FIX: iPhone Duo: the vertical bar follows the hardware through every rotation. On the cover display in landscape it stays on the side, including the rotation that puts the strip on the left, and it keeps clear of the camera wherever the rotation puts it (top or bottom of the strip). In 1.0.0 rotating fell back to horizontal bars. The inner display in portrait keeps horizontal bars, as it does in UIKit
- IMPROVEMENT: iPhone Duo: toolbar items are grouped into native Liquid Glass capsules, one per group (groups are split by
spacerAfter), with the back button as a round control on top, matching the system's sizes and spacing. The title moves to the leading edge, and content scrolling under it is blurred and faded like the system's scroll edge effect - NEW: iPhone Duo: when the strip runs out of room, toolbar items move, from the bottom up, into the system overflow menu while the tab bar stays whole. A group can be split, so its first items stay visible
- NEW:
labelonAdaptiveAppBarAction, a short name such as "Undo". It names the action in the iPhone Duo overflow menu, for VoiceOver on iOS, and as the tooltip on Android. Unliketitle, it never replaces the icon with text. Give every icon action one - FIX: iPhone Duo: an action with only
iconoriconWidget(noiosSymbol) showed up empty in the vertical bar - FIX: A custom bottom bar (
useNativeBottomBar: false) is left where it is on iPhone Duo; only the native tab bar moves into the vertical bar - FIX: Example app: the Profile tab had no route, so Search could not be opened and Profile opened Search
1.0.0 #
- BREAKING: The minimum iOS deployment target is now 15.0 (was 13.0). Xcode 27 no longer builds below 15.0. Set
platform :ios, '15.0'in yourios/PodfileandIPHONEOS_DEPLOYMENT_TARGET = 15.0in the Runner project - BREAKING: On iOS 26+ the native toolbar is no longer part of a page. With
AdaptiveApp, everyAdaptiveScaffoldwithAdaptiveAppBar(useNativeToolbar: true)hands its app bar to one fixed toolbar above the navigator. No code change is needed for ordinary pages.AdaptiveAppBar.leading,titleWidgetandAdaptiveAppBarAction.iconWidgetare now built above the navigator, so they must not look upNavigator.of(context)or page-level inherited widgets from their owncontext; capture the page's context in the callback instead.useHeroBackButtonhas no effect while the fixed toolbar is in use, because the back button already stays in place. See "Migrating to 1.0.0" in the README - NEW: 📱 iPhone Duo support. Apple's foldable iPhone works out of the box, open and folded. On the inner display, and on the cover display while folded, toolbar controls move into a fixed vertical bar in the trailing strip the system reserves, clear of the camera and status cluster, while the title stays on top. Nothing to set up
- NEW: On iPhone Duo the scaffold keeps the page body out of the trailing strip, the way UIKit does, so a page that does not use
SafeAreano longer runs underneath the status cluster and the vertical bar - NEW: Fixed Liquid Glass toolbar on iOS 26+. One toolbar stays in place while pages slide underneath it, and only its items change. The outgoing page's items fade out and the incoming page's fade in, driven by the route's own animation, so the change lasts exactly as long as the page transition, follows a back swipe under the finger and reverses when the swipe is cancelled. A back button that both pages show stays put. Dialogs and sheets leave the toolbar in place, dimmed and not tappable
- NEW:
AdaptiveToolbarHost, for apps that do not useAdaptiveApp. Install it in the appbuilder. It is router-agnostic: it relies on the widget tree only, not on aNavigatorObserver, so it works withNavigator, GoRouter (includingStatefulShellRoute), auto_route, nested navigators and tabs - NEW:
useFixedToolbaronAdaptiveScaffold(defaulttrue). Set it tofalsefor a scaffold that does not fill the screen from the top, such as one pane of a side by side layout, so it keeps its own toolbar. Scaffolds shown in a sheet, dialog or popup do this automatically - NEW: Depends on
foldable^1.0.3 for the iPhone Duo reserved regions - FIX: Builds with Xcode 27:
Package.swiftnow declares itsFlutterFrameworkdependency
0.1.111 #
- NEW: Custom SF Symbols on iOS.
AdaptiveAppBarAction, native buttons, and the tab bar now fall back to a bundle asset (UIImage(named:)) when a name is not a system SF Symbol, so custom symbols or images from the app's asset catalog work (@hieutbui) - NEW:
iconWidgetonAdaptiveAppBarActionfor a custom fallback widget (e.g. an SVG) on iOS <26 and Android (@hieutbui) - NEW: Per-state SF Symbols on the iOS 26+ native tab bar.
AdaptiveNavigationDestination.selectedIconnow accepts a distinct SF Symbol name for the selected state (outline when unselected, filled when selected) (@hieutbui, @philipgiuliani) - NEW:
minuteIntervalonAdaptiveTimePickerandAdaptiveDatePickerrestricts selectable minutes to a fixed grid (e.g. 15-minute steps). iOS uses the nativeminuteInterval; Android snaps the picked value onto the grid (@luflow) - NEW:
AdaptiveDatePickernow honorsdateAndTimeandmonthYearmodes on Android too, withuse24HourFormatsupport (@luflow)
0.1.110 #
- NEW:
subtitleandtitleWidgetonAdaptiveAppBar. Show a smaller subtitle below the title, or replace the title area with any widget. Works on iOS 26+ native toolbar (centered overlay), iOS <26CupertinoNavigationBar, and MaterialAppBar(@luflow) - NEW:
subtitleandimageBytesonAdaptivePopupMenuItem. Subtitles render natively viaUIAction.subtitleon iOS 15+, and image bytes (e.g. avatars) are shown clipped to a circle on iOS 26+ native menus, Material popup menus, and the iOS <26 action-sheet fallback (@luflow) - IMPROVEMENT: iOS 26+ native toolbar now insets the body's top padding by the toolbar height, so
SafeArea/SliverSafeAreainside a page clear the Liquid Glass toolbar automatically, matching howCupertinoPageScaffoldhandles a translucent navigation bar. Removes the need for per-screen top-offset hacks (@luflow) - FIX: Material alert dialogs now place the cancel (dismissive) button on the left, matching the Material 3 dialog guidelines (@luflow)
- FIX: iOS status bar style now follows the effective theme brightness on the Cupertino path, so it stays legible when a forced
ThemeModediffers from the system brightness (@luflow) - FIX: Fixed iOS 16+ popup menu items being reordered by the system by setting
preferredMenuElementOrder = .fixed, so items keep their declared order (@Sahil-Kundaliya) - FIX: Fixed an unbounded-width crash when an iOS 26 text popup button is placed directly in a
Row, before its native intrinsic width has been measured - FIX: Silenced an iOS 26 native button Auto Layout constraint conflict that logged on every layout pass
0.1.109 #
- NEW:
triggerOnLongPressandonTapon popup menu buttons — tap firesonTap, long-press opens the menu (@yuriylybimov) - NEW:
isDestructiveonAdaptivePopupMenuItem— renders destructive (red) styling on Material, iOS <26, and iOS 26+ native menus (@yuriylybimov) - FIX: destructive menu items now use the theme
colorScheme.errorinstead of a hardcoded red (@yuriylybimov) - FIX:
IOSSpringCurveno longer clamps its output to [0,1], restoring the natural spring overshoot in the mid-range (endpoints remain exact) (@yuriylybimov) - NEW: Exported
IOSSpringCurvefrom the package's public API (@yuriylybimov)
0.1.108 #
- IMPROVEMENT: Migrated the iOS plugin from CocoaPods to Swift Package Manager — apps with SPM enabled (
flutter config --enable-swift-package-manager) now consume the plugin as a Swift package, while CocoaPods-based projects keep working unchanged (@philipgiuliani) - IMPROVEMENT: Raised the iOS minimum deployment target from 12.0 to 13.0, matching Flutter's supported minimum (@philipgiuliani)
0.1.107 #
- NEW: Added
resizeToAvoidBottomInsetprop toAdaptiveScaffoldfor explicit control over keyboard-driven scaffold resizing across all platform paths (iOS 26+, iOS <26, Android) (@philasmar) - FIX: Fixed iOS 26+ native tab bar rendering with truncated/ellipsized labels on cold launch — replaced timing-based retry with a layout-aware container that rebuilds items when the platform view receives its real width (@philasmar)
0.1.106 #
- NEW: Added
ImageProvidersupport (AssetImage,FileImage,NetworkImage) forAdaptiveBottomNavigationBaricons — including async network image loading with caching and circular avatar rendering for iOS 26+ native tab bar (@philasmar) - NEW: Added
textColorandselectedTextColorprops toAdaptiveSegmentedControlfor explicit label color customization across iOS 26+, iOS <26, and Android (@philasmar) - FIX: Fixed dimmed background removal delay when closing iOS 26+ alert dialogs — removed redundant Flutter-side overlays so only the native
UIAlertControllerdim is used (@ctrl-Felix)
0.1.105 #
- NEW: Added
ImageIcon/AssetImagesupport for iOS 26+ native tab bar — custom asset icons (with optional per-state selected icon) can now be used alongside SF Symbols (@Mohamed-7018) - NEW: Added automatic RTL (right-to-left) layout support for iOS 26+ native tab bar — mirrors automatically based on
Directionality.of(context)(@Mohamed-7018) - NEW: Added
hideBottomDividerprop toAdaptiveListTilefor removing the bottom separator, useful for the last tile in a grouped list (@ctrl-Felix) - NEW: Added
separatorColorprop toAdaptiveListTilefor customizing the iOS bottom separator color (@philasmar) - FIX: Fixed iOS 26+ alert dialog incorrectly tinting the cancel button red when no primary action was present (@philasmar)
- FIX: Removed unnecessary empty vertical space in message-only alert dialogs on Android and iOS <26 (@philasmar)
- FIX: Fixed iOS segmented control inactive label colors not following the app theme on iOS 26+, and removed vertical overflow on older iOS versions (@philasmar)
0.1.104 #
- NEW: Added
tabBarHiddenprop toAdaptiveScaffoldto hide the native iOS 26+ tab bar — prevents nativeUITabBarfrom bleeding throughshowModalBottomSheet(@DmitriiSer) - NEW: Added
tintColorsupport for iOS 26+ native toolbar andprominentbutton style forAdaptiveAppBarAction(@luflow) - FIX: Fixed dynamic title updates not reflecting on iOS 26+ native toolbar (@Qian-Samuel)
- FIX: Fixed back button being obscured by window toolbar in iPadOS 26 windowed mode (@rivafarabi)
0.1.103 #
- FIX: Fixed iOS 18 navigation bar not being displayed (@adrianorios)
0.1.102 #
- IMPROVEMENT: Adjusted back button leading position on iOS 26+ native toolbar for better alignment
- NEW: Added brightness synchronization for iOS 26+ components — native buttons, switches, sliders, segmented controls, toolbar, and blur view now react to light/dark mode changes
- NEW: Added
cupertinoDecorationproperty to AdaptiveTextField and AdaptiveTextFormField for customizable iOS styling - NEW: Added drawer and endDrawer support to AdaptiveScaffold with full Material drawer behavior on all platforms
- FIX: Prevented native tab bar from floating above keyboard on iOS 26+ (@marcofucito)
0.1.101 #
- NEW: Added
enableToolbarGradientoption to AdaptiveScaffold for iOS 26+ toolbar gradient customization (@nadavfima) - NEW: Added
extendBodyBehindAppBaroption to AdaptiveScaffold (@Crucialjun) - NEW: Added
scaffoldMessengerKeyparameter to AdaptiveApp (@Crucialjun) - NEW: Added
autofillHintssupport to AdaptiveTextFormField (@Crucialjun) - NEW: Added
onTapOutsidecallback to AdaptiveTextFormField - FIX: Fixed missing return result from AdaptiveDatePicker (@obrunsmann)
- FIX: Fixed AdaptiveSwitch iOS 26 flutter container size (@PetrKubes97)
- FIX: Improved AdaptiveButton icon alignment and sizing
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.dev 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.dev
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
