oc_liquid_glass 0.2.1 copy "oc_liquid_glass: ^0.2.1" to clipboard
oc_liquid_glass: ^0.2.1 copied to clipboard

A Flutter package for creating realistic liquid glass droplet effects with GPU-accelerated shaders featuring refraction, blur, and lighting.

OneClient Liquid Glass #

A Flutter package for creating stunning liquid glass droplet effects with realistic refraction, blur, and lighting. Built with GPU-accelerated fragment shaders for smooth performance.

Features #

  • 🚀 No Dependencies: Pure Flutter implementation with zero external dependencies
  • 🌟 Realistic Glass Effects: Refraction, blur, and specular highlights
  • GPU Accelerated: Fragment shader-based rendering for optimal performance
  • 🎨 Highly Customizable: Fine-tune all visual parameters
  • 🎨 Individual Colors: Set unique colors for each liquid glass in a group
  • 📱 Production Ready: Smooth animations and responsive design
  • Scrollable Support: Fully supported when used inside scrollable widgets
  • 🎭 Modal Route Animation: Supported when used in modal route animations
  • �🔧 Easy Integration: Simple widget-based API
  • 🔢 Unlimited Droplets: Create as many droplets as you want (performance degrades with the amount of effects)

Limitations #

  • Works only on platforms that support Impeller engine
  • Grouped shapes limited to 4 shapes within one group due to shader limitations of Flutter (bug?)
  • Android emulator upside down bug is not on stable channel: https://github.com/flutter/flutter/issues/169429

Preview #

Liquid Glass Demo

Installation #

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

dependencies:
  oc_liquid_glass: ^0.1.5

Then run:

flutter pub get

Usage #

Basic Usage #

Wrap your content with OCLiquidGlassGroup and add OCLiquidGlass widgets for glass effects:

import 'package:oc_liquid_glass/oc_liquid_glass.dart';

Stack(
  children: [
    // Your background content
    Image.asset('assets/background.jpg'),
    
    // Glass layer with droplets
    OCLiquidGlassGroup(
      settings: const OCLiquidGlassSettings(),
      child: Stack(
        children: [
          Positioned(
            top: 100,
            left: 50,
            child: OCLiquidGlass(
              width: 120,
              height: 80,
              borderRadius: 40,
              child: Container(),
            ),
          ),
        ],
      ),
    ),
  ],
)

Advanced Configuration #

Customize the glass appearance with OCLiquidGlassSettings:

Stack(
  children: [
    // Your background content
    Image.asset('assets/background.jpg'),
    
    // Glass layer with custom settings
    OCLiquidGlassGroup(
      settings: const OCLiquidGlassSettings(
        refractStrength: -0.08,     // Stronger refraction
        blurRadiusPx: 2.0,         // Add frosted glass blur
        specStrength: 25.0,        // Brighter reflections
        lightbandColor: Colors.cyan, // Colored light band
      ),
      child: OCLiquidGlass(
        width: 120,
        height: 80,
        borderRadius: 40,
        child: Container(),
      ),
    ),
  ],
)

Configuration Reference #

OCLiquidGlassSettings Parameters #

Parameter Type Description
blendPx double Edge blending distance in pixels for smooth transitions
refractStrength double Strength of light refraction (negative = concave lens)
distortFalloffPx double Distance over which distortion effect fades out
distortExponent double Controls how sharply distortion falls off (higher = sharper)
blurRadiusPx double Base blur radius applied to the glass area
specAngle double Light source angle for specular highlights
specStrength double Intensity of specular highlights
specPower double Sharpness of specular highlights (higher = sharper)
specWidth double Specular width in pixels
lightbandOffsetPx double Distance from edge where light band appears
lightbandWidthPx double Width of the light band effect
lightbandStrength double Intensity of the light band
lightbandColor Color Color of the light band

OCLiquidGlass Widget Parameters #

Parameter Type Description
enabled bool Whether the glass effect is enabled
width double? Width of the glass shape
height double? Height of the glass shape
color Color Tint color for the glass shape
borderRadius double Border radius (clamped to half of smaller dimension)
shadow BoxShadow? Optional shadow effect
child Widget? Child widget to display inside the glass

Multiple Glass Droplets Example #

Create multiple glass effects with different colors and sizes:

Stack(
  children: [
    // Background
    Container(
      decoration: const BoxDecoration(
        gradient: LinearGradient(
          begin: Alignment.topLeft,
          end: Alignment.bottomRight,
          colors: [
            Color(0xFF1E3C72),
            Color(0xFF2A5298),
            Color(0xFF3D6BB3),
          ],
        ),
      ),
    ),
    
    // Glass layer with multiple droplets
    OCLiquidGlassGroup(
      settings: const OCLiquidGlassSettings(
        refractStrength: -0.08,
        blurRadiusPx: 1.5,
        specStrength: 15.0,
        lightbandColor: Colors.white70,
      ),
      child: Stack(
        children: [
          // Large amber droplet
          Positioned(
            top: 100,
            left: 50,
            child: OCLiquidGlass(
              width: 200,
              height: 120,
              borderRadius: 60,
              color: Colors.amber.withOpacity(0.3),
              child: const SizedBox(),
            ),
          ),
          
          // Medium blue droplet
          Positioned(
            top: 250,
            left: 300,
            child: OCLiquidGlass(
              width: 150,
              height: 100,
              borderRadius: 50,
              color: Colors.blue.withOpacity(0.2),
              child: const SizedBox(),
            ),
          ),
          
          // Small pink droplet
          Positioned(
            top: 180,
            left: 200,
            child: OCLiquidGlass(
              width: 80,
              height: 60,
              borderRadius: 30,
              color: Colors.pink.withOpacity(0.25),
              child: const SizedBox(),
            ),
          ),
          
          // Tiny green droplet
          Positioned(
            top: 320,
            left: 150,
            child: OCLiquidGlass(
              width: 60,
              height: 40,
              borderRadius: 20,
              color: Colors.green.withOpacity(0.2),
              child: const SizedBox(),
            ),
          ),
        ],
      ),
    ),
  ],
)

Fun Fact #

This widget & shader was created and improved using AI: OpenAI (o3, o4-mini-high) and Claude Sonnet 4.

License #

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

Changelog #

See CHANGELOG.md for a list of changes.

20
likes
160
points
318
downloads
screenshot

Publisher

verified publishereingrad.com

Weekly Downloads

A Flutter package for creating realistic liquid glass droplet effects with GPU-accelerated shaders featuring refraction, blur, and lighting.

Repository (GitHub)
View/report issues

Topics

#effects #shader #visual-effects #liquid-glass #apple

Documentation

API reference

Funding

Consider supporting this project:

buymeacoffee.com

License

MIT (license)

Dependencies

flutter

More

Packages that depend on oc_liquid_glass