๐ช Flutter Liquid Glass Widgets
Apple's iOS 26 "Liquid Glass" โ in Flutter, on every platform, in two lines of code.
Real refractive blur. Jelly-like spring physics. Dynamic lighting. Not a BackdropFilter hack โ an actual glass rendering engine.
30-second pitch
| What | A widget library that renders Apple's real iOS 26 Liquid Glass effect โ shader-based refraction, not a blurred box. |
| Where | iOS, Android, macOS, Web, Windows, Linux. One codebase, renderer picked automatically. |
| When to use it | Building nav bars, tab bars, sheets, menus โ the floating chrome layer. Not for content cards or full backgrounds (see Glass vs Content). |
| When not to use it | You need one translucent card and nothing else โ just use BackdropFilter. This package is heavier and more opinionated โ that's the trade. |
| The whole API surface | LiquidGlassWidgets.wrap() once in main(), then GlassScaffold per screen. Everything else is optional tuning. |
Install
dependencies:
flutter_liquid_glass_widgets: ^0.0.1
Requires Flutter โฅ 3.41.0 (Dart โฅ 3.5.0).
Get glass on screen โ 2 steps
// 1. main.dart โ once
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await LiquidGlassWidgets.initialize();
runApp(LiquidGlassWidgets.wrap(child: const MyApp()));
}
// 2. any screen
GlassScaffold(
background: Image.asset('assets/wallpaper.jpg', fit: BoxFit.cover),
appBar: GlassAppBar(title: const Text('My App')),
body: Center(child: GlassCard(child: Text('Hello, Glass!'))),
)
That's it โ GlassScaffold wires up background, blur layer, z-ordering, and status bar automatically. Full options: docs/GUIDE.md#glassscaffold--glasspage.
๐งญ Glass vs Content (30 seconds)
Glass = navigation chrome. Content = opaque, always.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GlassAppBar (glass) โ โ nav bars, tab bars, sheets, menus, buttons
โโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Opaque content area โ โ ListView, cards, article tiles โ normal Flutter widgets
โโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ GlassBottomBar (glass) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
One more rule: don't nest interactive glass widgets inside GlassCard/GlassContainer โ they're base surfaces, not wrappers (the effect silently degrades if you do). liquid_glass_lints catches this in your editor. Full explanation: docs/GUIDE.md#-glass-vs-content--design-philosophy.
Which widget do I need?
| I want... | Use |
|---|---|
| A screen with an app bar / tab bar | GlassScaffold โ start here for almost everything |
| A custom layout without a standard scaffold | GlassPage |
| A standalone floating card or panel | GlassCard / GlassContainer |
| Buttons, switches, sliders, chips | GlassButton ยท GlassSwitch ยท GlassSlider ยท GlassChip ยท GlassSegmentedControl |
| Text fields, search, pickers | GlassTextField ยท GlassSearchBar ยท GlassPicker ยท GlassCalendarPicker |
| Dialogs, sheets, menus, popovers | GlassDialog ยท GlassModalSheet ยท GlassMenu ยท GlassPopover ยท GlassCommandPalette |
| Toasts, progress, skeleton loading | GlassToast ยท GlassProgressIndicator ยท GlassSkeletonLoader |
Full catalog of every widget (40+): docs/GUIDE.md#-widget-categories.
Why this over a plain BackdropFilter wrapper?
| Typical glassmorphism package | This package | |
|---|---|---|
| Rendering | Blur + translucent color | Real shaders โ refraction, specular highlights, chromatic aberration |
| Motion | Opacity/blur tweens | Physics-based liquid morphing engine |
| Device performance | One fixed look | 3 auto-tuned quality tiers, persisted across launches |
| Accessibility | Usually bolted on | Reduce Motion / Reduce Transparency handled automatically, everywhere |
| Scope | A few container widgets | Full navigation-chrome system: scaffold, bars, sheets, menus, command palette |
Full comparison and honest trade-offs: docs/GUIDE.md#-why-flutter_liquid_glass_widgets.
Run an example
cd example && flutter pub get && flutter run
Full-app demos (Apple Music, Messages, News replicas + a travel-app showcase) and 12 focused copy-paste demos: docs/GUIDE.md#๏ธ-examples.
Everything else
This README is intentionally short. Deeper reference material lives in docs/GUIDE.md:
- Theming (app-wide, per-screen, per-subtree)
- Glass quality modes (
standard/premium/minimal) and when to use each - Performance tuning, adaptive quality, and cross-launch persistence
- Accessibility behavior and override priority
- Gyroscope-driven lighting
- Rendering architecture (for contributors / debugging)
- Testing
License & Attribution
MIT. This package forks liquid_glass_widgets by Sebastian Degenaar, built on liquid_glass_renderer by whynotmake.it (both MIT). See lib/src/renderer/RENDERER_ATTRIBUTION.md.
- pub.dev ยท Repository ยท Issues
If this saved you from hand-rolling shader code, a โญ on GitHub goes a long way.
Libraries
- constants/glass_defaults
- Common constants used throughout the flutter_liquid_glass_widgets package.
- constants/glass_shadow
- glass_a11y_lens_bridge
- Optional integration with
package:flutter_a11y_lens. - glass_devtools_bridge
- Bridges GlassAdaptiveScope diagnostics to a Dart VM service extension.
- liquid_glass_setup
- liquid_glass_widgets
- Liquid Glass Implementation according to Apple's Guidelines
- theme/glass_interaction_settings
- theme/glass_theme
- theme/glass_theme_data
- theme/glass_theme_helpers
- theme/glass_theme_presets
- theme/glass_theme_settings
- types/glass_command
- types/glass_quality
- types/glass_quality_change_reason
- types/glass_specular_sharpness
- utils/accessibility_config
- utils/draggable_indicator_physics
- utils/glass_brightness
- utils/glass_fuzzy_match
- utils/glass_morph_controller
- utils/glass_performance_monitor
- Glass Performance Monitor
- utils/glass_quality_adapter
- Glass Quality Adapter
- utils/glass_spring
- utils/liquid_morph_physics
- utils/wcag_luminance
- widgets/containers/glass_avatar
- widgets/containers/glass_card
- widgets/containers/glass_chart
- widgets/containers/glass_container
- widgets/containers/glass_divider
- widgets/containers/glass_grouped_section
- widgets/containers/glass_list_tile
- widgets/containers/glass_stepper
- widgets/containers/glass_timeline
- widgets/effects/progressive_blur
- widgets/feedback/glass_progress_indicator
- widgets/feedback/glass_skeleton_loader
- widgets/input/glass_calendar_picker
- widgets/input/glass_form_field
- widgets/input/glass_password_field
- widgets/input/glass_picker
- widgets/input/glass_rating_bar
- widgets/input/glass_search_bar
- widgets/input/glass_text_area
- widgets/input/glass_text_field
- widgets/interactive/glass_badge
- widgets/interactive/glass_chip
- widgets/interactive/glass_page_control
- widgets/interactive/glass_segmented_control
- widgets/interactive/glass_slider
- widgets/interactive/glass_switch
- widgets/interactive/liquid_glass_scope
- widgets/overlays/glass_action_sheet
- widgets/overlays/glass_command_palette
- widgets/overlays/glass_dialog
- widgets/overlays/glass_modal_sheet
- widgets/overlays/glass_popover
- widgets/overlays/glass_sheet
- widgets/overlays/glass_toast
- widgets/shared/adaptive_glass
- widgets/shared/adaptive_glass_text
- widgets/shared/adaptive_liquid_glass_layer
- widgets/shared/animated_glass_indicator
- widgets/shared/glass_a11y_scope
- widgets/shared/glass_accessibility_scope
- widgets/shared/glass_adaptive_scope
- widgets/shared/glass_backdrop_scope
- widgets/shared/glass_content_aware_scope
- widgets/shared/glass_effect
- widgets/shared/glass_focus_region
- widgets/shared/glass_focus_ring_painter
- widgets/shared/glass_interaction_state_mixin
- widgets/shared/glass_isolation_scope
- widgets/shared/glass_luminance_sampler
- widgets/shared/glass_motion_scope
- widgets/shared/glass_page
- widgets/shared/glass_scroll_edge_effect
- widgets/shared/inherited_liquid_glass
- widgets/shared/lightweight_liquid_glass
- widgets/surfaces/glass_app_bar
- widgets/surfaces/glass_bottom_bar
- widgets/surfaces/glass_dock
- widgets/surfaces/glass_large_title
- widgets/surfaces/glass_scaffold
- widgets/surfaces/glass_searchable_bottom_bar
- widgets/surfaces/glass_tab_bar
- widgets/surfaces/glass_toolbar
- widgets/surfaces/shared/glass_search_bar_config
- widgets/surfaces/shared/tab_bar_accessory_placement
- widgets/surfaces/shared/tab_bar_searchable_controller