import 'dart:ui'; import 'package:flutter/material.dart'; class FrostedDialog extends StatelessWidget { final Widget child; final double blurSigma; final Color barrierColor; const FrostedDialog({ super.key, required this.child, this.blurSigma = 5.0, this.barrierColor = const Color.fromRGBO(0, 0, 0, 0.5), }); @override Widget build(BuildContext context) { return Stack( children: [ // 毛玻璃背景 BackdropFilter( filter: ImageFilter.blur(sigmaX: blurSigma, sigmaY: blurSigma), child: Container( color: Colors.transparent, ), ), Dialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0), ), backgroundColor: Colors.transparent, // 背景透明,由 child 自己决定 child: child, ), ], ); } }