import 'dart:ui'; import 'package:flutter/material.dart'; class GlassContainer extends StatelessWidget { final Widget child; final double? width; final double? height; final EdgeInsetsGeometry? padding; final EdgeInsetsGeometry? margin; final double borderRadius; final List? gradientColors; final double blur; final double opacity; final bool showBorder; final Color? borderColor; const GlassContainer({ super.key, required this.child, this.width, this.height, this.padding, this.margin, this.borderRadius = 16.0, this.gradientColors, this.blur = 20.0, this.opacity = 0.1, this.showBorder = true, this.borderColor, }); @override Widget build(BuildContext context) { final cs = Theme.of(context).colorScheme; final isDark = Theme.of(context).brightness == Brightness.dark; final defaultGradient = isDark ? [ Colors.white.withValues(alpha: opacity), Colors.white.withValues(alpha: opacity * 0.5), ] : [ Colors.white.withValues(alpha: 0.7), Colors.white.withValues(alpha: 0.4), ]; final effectiveBorderColor = borderColor ?? (isDark ? Colors.white.withValues(alpha: 0.15) : Colors.white.withValues(alpha: 0.5)); final shadowColor = isDark ? Colors.black.withValues(alpha: 0.3) : cs.shadow.withValues(alpha: 0.08); return Container( width: width, height: height, margin: margin, decoration: BoxDecoration( borderRadius: BorderRadius.circular(borderRadius), boxShadow: [ BoxShadow( color: shadowColor, blurRadius: 24, spreadRadius: 0, offset: const Offset(0, 8), ), ], ), child: ClipRRect( borderRadius: BorderRadius.circular(borderRadius), child: BackdropFilter( filter: ImageFilter.blur(sigmaX: blur, sigmaY: blur), child: Container( padding: padding, decoration: BoxDecoration( borderRadius: BorderRadius.circular(borderRadius), border: showBorder ? Border.all(color: effectiveBorderColor, width: 1) : null, gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: gradientColors ?? defaultGradient, ), ), child: child, ), ), ), ); } }