import 'package:flutter/material.dart'; import '../../utils/log_util.dart'; import '../widgets/cheer_reward_widget.dart'; import '../widgets/star_reward_widget.dart'; Future showStarRewardDialog( BuildContext context, { double width = 357.5, double height = 165, int starCount = 3, VoidCallback? onDismiss, }) async { ///showDialog 方法的返回值将是 Navigator.of(context).pop 传递给对话框的参数 await showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return PopScope( canPop: false, onPopInvoked: (didPop) { Log.d('WQF showStarRewardDialog onPopInvoked didPop=$didPop'); }, child: Dialog( backgroundColor: Colors.transparent, // 设置对话框背景为透明 insetPadding: const EdgeInsets.all(0), // 去除对话框的内边距 child: StarRewardWidget( width: width, height: height, isPlaying: true, starCount: starCount, onAnimationEnd: () { Navigator.of(context).pop(); // 关闭对话框 }, ), ), ); }, ); onDismiss?.call(); } Future showCheerRewardDialog( BuildContext context, { required String lottieFile, double width = 357.5, double height = 165, VoidCallback? onDismiss, }) async { await showDialog( context: context, barrierDismissible: false, // 点击对话框外部不关闭对话框 builder: (BuildContext context) { return PopScope( canPop: false, onPopInvoked: (didPop) { Log.d('WQF showCheerRewardDialog onPopInvoked didPop=$didPop'); }, child: Dialog( backgroundColor: Colors.transparent, // 设置对话框背景为透明 insetPadding: const EdgeInsets.all(0), // 去除对话框的内边距 child: CheerRewardWidget( lottieFile: lottieFile, width: width, height: height, isPlaying: true, onAnimationEnd: () { Navigator.of(context).pop(); // 关闭对话框 }, ), ), ); }, ); onDismiss?.call(); }