Flutter Glass Morphism Plugin

A Flutter plugin implementing glassmorphism design with translucent, dynamic glass-like UI components featuring advanced blur, opacity, and visual effects that create stunning modern interfaces.

Features

  • Water Droplet Effects: Create realistic water droplet surfaces that magnify and distort background content
  • Lens Distortion: Simulate the optical properties of liquid glass with magnification and refraction
  • Surface Tension: Realistic droplet edges with surface tension effects
  • Specular Highlights: Dynamic light reflections that simulate liquid surfaces
  • Multiple Droplet Patterns: Scatter multiple droplets across surfaces for complex effects
  • Comprehensive Components: Buttons, containers, cards, app bars, tab bars, dialogs, and more
  • Customizable Properties: Adjust magnification, distortion strength, droplet curvature, and refractive index
  • Fluid Animations: Smooth droplet formation and surface ripple effects
  • Performance Optimized: Efficient custom painters and GPU-accelerated effects

Demo

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_glass_morphism: ^1.0.0

Then run:

flutter pub get

Quick Start

1. Wrap your app with GlassMorphismThemeProvider

import 'package:flutter_glass_morphism/flutter_glass_morphism.dart';

void main() {
  runApp(
    GlassMorphismThemeProvider(
      child: MaterialApp(
        home: MyHomePage(),
      ),
    ),
  );
}

2. Use Glass Morphism Components

// Glass Morphism Button
GlassMorphismButton(
  onPressed: () => print('Button pressed'),
  child: Text('Glass Morphism Button'),
)

// Glass Morphism Container
GlassMorphismContainer(
  padding: EdgeInsets.all(16),
  child: Text('Glass container content'),
)

// Glass Morphism Card
GlassMorphismCard(
  child: Column(
    children: [
      Text('Card Title'),
      Text('Card content with glass effect'),
    ],
  ),
)

Components

GlassMorphismMaterial

The core material that provides the glass morphism effect with advanced visual properties:

GlassMorphismMaterial(
  blurIntensity: 20.0,
  opacity: 0.15,
  glassThickness: 1.0,
  tintColor: Colors.blue,
  borderRadius: BorderRadius.circular(12),
  enableBackgroundDistortion: true,
  enableGlassBorder: true,
  child: YourWidget(),
)

GlassMorphismButton

Interactive buttons with glass effects:

GlassMorphismButton(
  onPressed: () {},
  style: GlassMorphismButtonStyle(
    backgroundColor: Colors.green,
    borderRadius: BorderRadius.circular(24),
    blurIntensity: 8.0,
  ),
  child: Text('Custom Button'),
)

GlassMorphismAppBar

App bar with dynamic sizing and glass effects:

GlassMorphismAppBar(
  title: Text('My App'),
  enableDynamicSizing: true,
  scrollController: scrollController,
  actions: [
    IconButton(
      icon: Icon(Icons.settings),
      onPressed: () {},
    ),
  ],
)

GlassMorphismTabBar

Tab navigation with morphing effects:

GlassMorphismTabBar(
  controller: tabController,
  enableMorphing: true,
  tabs: [
    Tab(text: 'Home'),
    Tab(text: 'Explore'),
    Tab(text: 'Profile'),
  ],
)

GlassMorphismDialog

Modal dialogs with glass backdrop:

GlassMorphismDialog.show(
  context: context,
  title: Text('Glass Dialog'),
  content: Text('Dialog with glass morphism effect'),
  actions: [
    TextButton(
      onPressed: () => Navigator.pop(context),
      child: Text('Close'),
    ),
  ],
)

GlassMorphismBottomSheet

Bottom sheets with glass material:

GlassMorphismBottomSheet.show(
  context: context,
  enableDragHandle: true,
  child: Container(
    padding: EdgeInsets.all(24),
    child: Text('Bottom sheet content'),
  ),
)

Theming

Customize the appearance of all glass morphism components:

GlassMorphismThemeProvider(
  data: GlassMorphismThemeData(
    defaultBlurIntensity: 12.0,
    defaultOpacity: 0.85,
    lightGlassColor: Color(0x80FFFFFF),
    darkGlassColor: Color(0x80000000),
    enableSpecularHighlights: true,
    buttonTheme: GlassMorphismButtonThemeData(
      height: 48.0,
      borderRadius: BorderRadius.circular(24),
    ),
    cardTheme: GlassMorphismCardThemeData(
      elevation: 8.0,
      borderRadius: BorderRadius.circular(16),
    ),
  ),
  child: YourApp(),
)

Advanced Usage

Glass Droplet Effects

import 'package:flutter_glass_morphism/flutter_glass_morphism.dart';

// Single glass droplet effect
GlassDropletEffect(
  dropletSize: 80.0,
  intensity: 0.8,
  position: Alignment(0.2, -0.3),
  child: YourWidget(),
)

// Multiple scattered droplets
MultipleGlassDropletsEffect(
  dropletCount: 5,
  minSize: 20.0,
  maxSize: 80.0,
  intensity: 0.6,
  child: YourWidget(),
)

// Glass lens magnification
GlassMorphismLensEffect(
  magnification: 1.4,
  lensRadius: 100.0,
  distortionStrength: 0.15,
  refractionIndex: 1.33,
  child: YourWidget(),
)

Animated Glass Effects

class AnimatedGlassWidget extends StatefulWidget {
  @override
  _AnimatedGlassWidgetState createState() => _AnimatedGlassWidgetState();
}

class _AnimatedGlassWidgetState extends State<AnimatedGlassWidget>
    with TickerProviderStateMixin {
  late AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: Duration(seconds: 2),
      vsync: this,
    )..repeat(reverse: true);
  }

  @override
  Widget build(BuildContext context) {
    return GlassEffects.dynamicGlass(
      child: YourWidget(),
      animation: _controller,
      maxBlur: 20.0,
      minBlur: 5.0,
    );
  }
}

Performance Considerations

  • Blur effects can be performance-intensive on lower-end devices
  • Use BlurUtils.shouldEnableBlur() to check device capabilities
  • Consider reducing blur intensity for better performance
  • Use GlassMorphismThemeData.adaptiveColoring for automatic optimization

Platform Support

  • ✅ iOS
  • ✅ Android
  • ✅ Web
  • ✅ macOS
  • ✅ Windows
  • ✅ Linux

Examples

Check out the example app for a comprehensive demonstration of all components and features.

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Inspiration

This plugin is inspired by modern glassmorphism design trends and aims to bring sophisticated glass-like visual effects and fluid interactions to Flutter applications across all platforms.

Libraries

flutter_glass_morphism
A Flutter plugin implementing glassmorphism design system.