// packages/feature_common/lib/widgets/common_game_shell.dart import 'package:flutter/material.dart'; import '../screens/ranking_screen.dart'; import '../screens/settings_screen.dart'; import 'ad_banner_widget.dart'; /// 모든 게임 앱이 공유하는 '공통 셸' 위젯 /// (AppBar, 설정/랭킹 버튼, 하단 광고 배너 포함) class CommonGameShell extends StatelessWidget { final Widget body; final String title; /// 랭킹 버튼을 눌렀을 때 실행될 함수 (외부 주입) /// null을 전달하면 랭킹 버튼이 비활성화됩니다. final VoidCallback? onRankingPressed; const CommonGameShell({ super.key, required this.body, required this.title, this.onRankingPressed, }); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(title), actions: [ // 랭킹 버튼 IconButton( icon: const Icon(Icons.leaderboard_outlined), onPressed: onRankingPressed, // 👈 주입받은 함수 실행 ), // 설정 버튼 IconButton( icon: const Icon(Icons.settings_outlined), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => const SettingsScreen(), ), ); }, ), ], ), body: body, // 👈 주입받은 내용물 bottomNavigationBar: const AdBannerWidget(), ); } }