import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:yumi/modules/room_game/views/room_game_list_sheet.dart'; import 'package:yumi/shared/tools/sc_lk_dialog_util.dart'; import 'package:yumi/shared/tools/sc_room_top_layer_guard.dart'; import 'package:yumi/ui_kit/components/sc_debounce_widget.dart'; import 'package:yumi/ui_kit/widgets/svga/sc_svga_asset_widget.dart'; void showRoomGameListSheet(BuildContext context, {String? initialGameId}) { if (!context.mounted) { return; } final guardLease = SCRoomTopLayerGuard().acquire( reason: 'room_game_list_sheet', ); try { unawaited( showBottomInBottomDialog( context, RoomGameBottomSheet(roomContext: context, initialGameId: initialGameId), barrierColor: Colors.black54, ).whenComplete(guardLease.release), ); } catch (_) { guardLease.release(); } } class RoomGameEntryButton extends StatelessWidget { const RoomGameEntryButton({super.key}); @override Widget build(BuildContext context) { return SCDebounceWidget( onTap: () { showRoomGameListSheet(context); }, child: SCSvgaAssetWidget( assetPath: "sc_images/room/sc_icon_room_game_entry_anim.svga", width: 44.w, height: 44.w, active: true, loop: true, fallback: Image.asset( "sc_images/room/sc_icon_botton_game.png", width: 44.w, height: 44.w, fit: BoxFit.contain, ), ), ); } } class RoomGameBottomSheet extends StatelessWidget { const RoomGameBottomSheet({ super.key, required this.roomContext, this.initialGameId, }); final BuildContext roomContext; final String? initialGameId; @override Widget build(BuildContext context) { return RoomGameListSheet( roomContext: roomContext, initialGameId: initialGameId, ); } }