swift_liquid

iOS-style liquid animations for Flutter - Fluid interactions with spring physics, beautiful modals, and glass effects.

pub package

Features

  • 🌊 Liquid Tap Effects - Scale, stretch, and drag with spring physics
  • 📱 Bottom Sheets - iOS-style modals with drag-to-dismiss
  • 🎯 Popovers & Menus - Smart positioning with glass effects
  • 🎨 Glass Container - Built-in glass morphism with backdrop blur
  • âš¡ Widget Extension - Add liquid effects to any widget
  • ♿ Accessibility - Full screen reader and keyboard support

Installation

dependencies:
  swift_liquid: ^1.0.0

Quick Start

Add Liquid Effects to Any Widget

import 'package:swift_liquid/swift_liquid.dart';

Container(
  width: 100,
  height: 100,
  color: Colors.blue,
)
.sGestureDetector(
  onPressed: () => print('Tapped!'),
)

Bottom Sheet

showSModalBottomSheet(
  context: context,
  child: YourContent(),
)
showSMenu(
  context: context,
  items: [
    SPopupMenuItem(title: 'Edit', onTap: () {}),
    SPopupMenuItem(title: 'Delete', destructive: true, onTap: () {}),
  ],
)

Glass Container

SContainer(
  padding: EdgeInsets.all(16),
  child: Text('Glass Container'),
)

All Features

Gesture Detector

Extension Method (Recommended)

AnyWidget().sGestureDetector(
  onPressed: () {},
  onLongPress: () {},
  stretchSensitivity: 1.5,
)

Widget Wrapper

SGestureDetector(
  onPressed: () {},
  child: YourWidget(),
)

Modals

Bottom Sheet

showSModalBottomSheet(
  context: context,
  child: Content(),
  enableDrag: true,
)

Popover

showSPopover(
  context: context,
  child: Content(),
  position: Offset(x, y),
)

Menu

showSMenu(
  context: context,
  items: [SPopupMenuItem(...)],
)

Buttons

SIconButton(icon: Icons.favorite, onPressed: () {})
SCloseButton(onPressed: () {})
SPopupMenuButton(items: [...])

Glass Container

SContainer(
  width: 200,
  padding: EdgeInsets.all(16),
  borderRadius: 20,
  enableBlur: true,
  child: Text('Content'),
)

Accessibility

SAccessibility.button(
  label: 'Save',
  onPressed: () {},
  child: Button(),
)

SAccessibility.announce(context, 'Saved!');

Parameters

SGestureDetector

  • onPressed - Tap callback
  • onLongPress - Long press callback
  • scaleOnPress - Scale factor (default: 1.1)
  • stretchSensitivity - Drag sensitivity (default: 1.0)
  • translateSensitivity - Movement sensitivity (default: 1.0)
  • enableBrightness - Radial gradient effect

SContainer

  • All Container properties
  • borderRadius - Corner radius (default: 20)
  • enableBlur - Backdrop blur (default: true)
  • blurSigma - Blur intensity (default: 5.0)

Examples

See the example folder for complete examples.

License

MIT License - see LICENSE file.

Libraries

liqui
swift_liquid