real_liquid_glass 0.3.0 copy "real_liquid_glass: ^0.3.0" to clipboard
real_liquid_glass: ^0.3.0 copied to clipboard

PlatformiOSmacOS

Real Liquid Glass containers and bottom bars. Hosts Apple's native UIGlassEffect on iOS 26+, adapts automatically to the iOS 27 transparency slider and accessibility settings, with a Flutter-drawn fro [...]

real_liquid_glass #

Real Liquid Glass for Flutter — not a shader imitation.

Demo recorded on an iPhone 17: a music app with glass cards, a glass mini-player, and the native Liquid Glass tab bar morphing between tabs

On iOS 26+ and macOS 26+ these widgets host Apple's native glass material (UIGlassEffect / NSGlassEffectView) in a platform view beneath your Flutter content, so you get actual refractive Liquid Glass: it samples and bends what's behind it, shimmers on touch, merges like droplets, and — because it's the system material — automatically follows every system appearance setting, including:

  • the iOS 27 transparency slider (ultra-clear → fully tinted),
  • Reduce Transparency and Increase Contrast,
  • iOS 27's refined edges, highlights, and content diffusion.

Elsewhere it degrades gracefully behind the same API: a native system blur on iOS/macOS < 26, and a Flutter-drawn frosted material on Android, web, Windows, and Linux (with high-contrast support and an intensity dial).

Widgets #

LiquidGlassContainer #

The primitive. Use it like a Container and build whatever you want — cards, pills, headers, floating panels:

LiquidGlassContainer(
  shape: const LiquidGlassShape.roundedRectangle(16),
  padding: const EdgeInsets.all(20),
  onTap: () => play(),
  child: const Text('Now playing'),
)

Options: style (LiquidGlassStyle.regular for legibility, .clear over media), shape (.capsule() or .roundedRectangle(r)), tint, interactive (Apple's touch shimmer), and Container-style padding, margin, width, height, alignment. Supplying onTap automatically enables the native interactive material on iOS and requires no Swift setup.

LiquidGlassGroup — true liquid merging #

The signature behavior from Apple's demos: glass shapes that fuse like droplets when they approach each other. Wrap any subtree and every LiquidGlassContainer inside it shares one native glass container (UIGlassContainerEffect / NSGlassEffectContainerView):

LiquidGlassGroup(
  spacing: 32, // distance at which shapes begin to merge
  child: Stack(
    children: [
      Align(child: LiquidGlassContainer(
        shape: const LiquidGlassShape.capsule(), width: 200, height: 64)),
      Positioned(
        left: _x, top: _y, // animate or drag this — the glass morphs along
        child: LiquidGlassContainer(
          shape: const LiquidGlassShape.capsule(), width: 64, height: 64)),
    ],
  ),
)

Bonus: N containers in a group cost one platform view, not N.

LiquidGlassBottomBar #

A floating capsule tab bar in the iOS 26/27 idiom, built on the container:

LiquidGlassBottomBar(
  items: const [
    LiquidGlassBarItem(
      icon: CupertinoIcons.house,
      sfSymbol: 'house',
      label: 'Home',
    ),
    LiquidGlassBarItem(
      icon: CupertinoIcons.search,
      sfSymbol: 'magnifyingglass',
      label: 'Search',
    ),
    LiquidGlassBarItem(
      icon: CupertinoIcons.person,
      sfSymbol: 'person',
      label: 'Profile',
    ),
  ],
  currentIndex: _index,
  onTap: (i) => setState(() => _index = i),
)

Place it above your content (e.g. bottom-aligned in a Stack) so the glass has something to refract. On iOS this widget is a complete native UITabBar, not a Flutter recreation: iOS owns the Liquid Glass surface, selection lens, touch response, accessibility, and system morphing animation. sfSymbol and selectedSfSymbol configure its native icons. Other platforms keep the Flutter-rendered fallback behind the same API.

LiquidGlass.capabilities() #

Runtime introspection when you need it:

final caps = await LiquidGlass.capabilities();
if (caps.nativeGlass) { /* real UIGlassEffect (iOS 26+) */ }
if (caps.reduceTransparency) { /* user prefers opaque surfaces */ }

Design notes #

  • Glass needs content. Apple's material only reads as glass over rich, scrolling content. Don't stack glass on glass; don't put it on a flat background and expect magic.
  • regular vs clear: default to regular — it keeps text legible. Reserve clear for controls over photos/video.
  • Tinting: supported, but Apple's guidance is that glass reads best untinted. The bar's selected color is the ambient Cupertino primary.
  • Touch handling: non-interactive glass never intercepts touches; your widgets behind and above it keep working.
  • The fallback's fallbackIntensity (0–1) is the in-app analogue of the iOS 27 slider for platforms that don't have one.

Requirements #

  • iOS / macOS: builds with Xcode 26+ (iOS/macOS 26 SDK). Runs on any OS version the app supports — glass on 26+, system blur before that.
  • Other platforms: no setup; the Dart fallback is dependency-free.

Alternatives #

Honest map of the space: native_liquid_glass wraps ~20 native iOS controls (buttons, pickers, sheets…) if you want a whole widget suite; cupertino_native embeds complete native bars; shader packages like liquid_glass_renderer imitate the look anywhere without native views. This package instead stays deliberately small: one glass container primitive you compose into anything, plus a bottom bar, with liquid merging for arbitrary containers and macOS support — and zero Dart dependencies.

Example #

example/ contains the four-tab music app shown above: glass cards and a mini-player over rich artwork, driven by the native Liquid Glass tab bar.

7
likes
150
points
244
downloads

Documentation

API reference

Publisher

verified publisherkiddobuild.dev

Weekly Downloads

Real Liquid Glass containers and bottom bars. Hosts Apple's native UIGlassEffect on iOS 26+, adapts automatically to the iOS 27 transparency slider and accessibility settings, with a Flutter-drawn frosted fallback everywhere else.

Repository (GitHub)
View/report issues

Topics

#liquid-glass #glassmorphism #ios #cupertino #ui

License

MIT (license)

Dependencies

flutter

More

Packages that depend on real_liquid_glass

Packages that implement real_liquid_glass