platform_adaptive_widgets 1.0.5 copy "platform_adaptive_widgets: ^1.0.5" to clipboard
platform_adaptive_widgets: ^1.0.5 copied to clipboard

A spiritual continuation of flutter_platform_widgets library

Platform Adaptive Widgets #

MIT License

A spiritual rewrite and continuation of flutter_platform_widgets library.

Platform-adaptive widgets that automatically render Material widgets on Android and Cupertino widgets on iOS — with zero platform checks in your app code.


Widgets Catalog #

Dialogs #

Widget / Function Material Cupertino Data Classes
showPlatformDatePicker() showDatePicker CupertinoDatePicker + showCupertinoModalPopup MaterialDatePickerData, CupertinoDatePickerData
showPlatformTimePicker() showTimePicker CupertinoDatePicker (time mode) + showCupertinoModalPopup MaterialTimePickerData, CupertinoDatePickerData
PlatformMenuPicker<T> DropdownMenu + DropdownMenuEntry PullDownButton / PullDownMenuItem (≤5 items) or CupertinoPicker + showCupertinoModalPopup (>5 items) MaterialMenuPickerData, CupertinoMenuPickerData
showPlatformDialog<T>() showDialog + Dialog / Dialog.fullscreen showCupertinoDialog PlatformDialogData, MaterialDialogData
showPlatformAlertDialog<T>() + PlatformAlertDialogActionButton AlertDialog + TextButton CupertinoAlertDialog + CupertinoDialogAction MaterialAlertDialogData, CupertinoAlertDialogData
showPlatformModalBottomSheet<T>() showModalBottomSheet showCupertinoModalPopup
showPlatformSimpleAlert() SnackBar via ScaffoldMessenger CupertinoAlertDialog via showCupertinoDialog PlatformDialogData

Interaction #

Widget Material Cupertino Data Classes
PlatformButton TextButton, ElevatedButton, OutlinedButton, FilledButton (via MaterialButtonVariant) CupertinoButton, CupertinoButton.filled, CupertinoButton.tinted (via CupertinoButtonVariant) MaterialButtonData, CupertinoButtonData
PlatformCheckbox Checkbox CupertinoCheckbox PlatformCheckboxData, MaterialCheckboxData, CupertinoCheckboxData
PlatformExpansionTile ExpansionTile CupertinoExpansionTile MaterialExpansionTileData, CupertinoExpansionTileData
PlatformRadioGroup<T> RadioGroup + Radio RadioGroup + CupertinoRadio PlatformRadioGroupData<T>, PlatformRadioData<T>, MaterialRadioData<T>, CupertinoRadioData<T>
PlatformScrollbar Scrollbar CupertinoScrollbar MaterialScrollbarData, CupertinoScrollbarData
PlatformSearchBar SearchBar CupertinoSearchTextField PlatformSearchBarData, MaterialSearchBarData, CupertinoSearchBarData
PlatformSegmentButton<T> SegmentedButton + ButtonSegment CupertinoSlidingSegmentedControl MaterialSegmentButtonData<T>, CupertinoSegmentButtonData<T>
PlatformSlider Slider CupertinoSlider PlatformSliderData, MaterialSliderData
PlatformSwitch Switch CupertinoSwitch PlatformSwitchData, MaterialSwitchData, CupertinoSwitchData
PlatformTextField TextField CupertinoTextField PlatformTextFieldData, MaterialTextFieldData, CupertinoTextFieldData

Layout #

Widget Material Cupertino Data Classes
PlatformApp / PlatformApp.router MaterialApp / MaterialApp.router CupertinoApp / CupertinoApp.router AppData, PlatformAppRouterData, MaterialAppData, MaterialAppRouterData, CupertinoAppData, CupertinoAppRouterData
PlatformAppBar AppBar CupertinoNavigationBar MaterialAppBarData, CupertinoNavigationBarData
PlatformScaffold Scaffold CupertinoPageScaffold MaterialScaffoldData, CupertinoScaffoldData
PlatformTabScaffold Scaffold + NavigationBar + NavigationDestination CupertinoTabScaffold + CupertinoTabBar + CupertinoTabView MaterialTabScaffoldData, CupertinoTabScaffoldData, TabDestination

Painting #

Widget Material Cupertino Data Classes
PlatformListTile ListTile CupertinoListTile / CupertinoListTile.notched MaterialListTileData, CupertinoListTileData
PlatformProgressIndicator CircularProgressIndicator CupertinoActivityIndicator MaterialProgressIndicatorData, CupertinoProgressIndicatorData

Utilities #

Generic Platform Widgets

Widget Description
PlatformWidget Takes materialBuilder and cupertinoBuilder callbacks to render any custom widget per platform.
PlatformWidgetBuilder Same as PlatformWidget but also passes a shared child widget to both builders.

Platform Theme

PlatformTheme.of(context) — provides unified access to theme properties across platforms:

Property Material Cupertino
barBackgroundColor Theme.of(context).appBarTheme.backgroundColor CupertinoTheme.of(context).barBackgroundColor
primaryColor Theme.of(context).primaryColor CupertinoTheme.of(context).primaryColor
primaryContrastingColor Theme.of(context).colorScheme.onPrimary CupertinoTheme.of(context).primaryContrastingColor
scaffoldBackgroundColor Theme.of(context).scaffoldBackgroundColor CupertinoTheme.of(context).scaffoldBackgroundColor
selectionHandleColor Theme.of(context).colorScheme.onSurface CupertinoTheme.of(context).selectionHandleColor

Context Extensions

Extensions on BuildContext for inline platform-specific values:

Extension Description
platformValue<T>(material:, cupertino:) Returns the value matching the current platform.
platformValueNullable<T>(material:, cupertino:) Nullable variant of platformValue.
platformLazyValue<T>(material:, cupertino:) Lazily evaluates only the callback for the current platform.
platformLazyNullable<T>(material:, cupertino:) Nullable variant of platformLazyValue.
platformIcon(material:, cupertino:) Convenience for selecting platform-specific IconData.

Other Extensions

Extension Description
DateTimeExtensions.toDate() Converts DateTimeDate.
TimeOfDayExtensions.toDateTime() Converts TimeOfDayDateTime.

Models

Model Description
Date An immutable gregorian calendar date (year, month, day) with comparison, arithmetic, and conversion utilities.
PlatformAdaptiveIcons A class that provides adaptive icons based on the current platform.

Base Classes #

All platform widgets extend one of these base classes, which use compile-time defaultTargetPlatform resolution:

Base Class Description
PlatformWidgetBase Core abstract StatelessWidget with buildMaterial() and buildCupertino().
PlatformWidgetKeyedBase Adds an optional widgetKey for the underlying platform widget.
PlatformWidgetBuilderBase Adds a required child widget passed through to the platform builder.
PlatformWidgetKeyedBuilderBase Combines both widgetKey and child.

Contributors #

Contributors

Made with contrib.rocks.

Authors #

Used By #

This project is used by the following companies:

  • Didata Automatisering B.V
  • Dimerce B.V

License #

MIT

2
likes
160
points
463
downloads

Publisher

unverified uploader

Weekly Downloads

A spiritual continuation of flutter_platform_widgets library

Homepage
Repository (GitHub)
View/report issues

Topics

#adaptive #widget #material-design #material3 #cupertino

Documentation

API reference

License

MIT (license)

Dependencies

cupertino_ui, flutter, material_ui, pull_down_button

More

Packages that depend on platform_adaptive_widgets