// // packages/feature_common/lib/screens/home_screen.dart // import 'dart:developer'; // import 'package:flutter/material.dart'; // import 'package:provider/provider.dart'; // // ๐Ÿ”ฝ [์ˆ˜์ •] ์„œ๋น„์Šค๋งŒ importํ•˜๊ณ , ๋ชจ๋ธ์€ ์ƒˆ๋กœ ๋งŒ๋“  GameInfo๋ฅผ ์‚ฌ์šฉ // import 'package:service_api/service_api.dart'; // import '../models/game_info.dart'; // ๐Ÿ‘ˆ GameInfo ๋ชจ๋ธ import // // ๐Ÿ”ฝ [์ˆ˜์ •] ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋˜ ์œ„์ ฏ/ํ™”๋ฉด import // import 'ranking_screen.dart'; // import 'settings_screen.dart'; // import '../widgets/ad_banner_widget.dart'; // class HomeScreen extends StatefulWidget { // // ๐Ÿ”ฝ [์ˆ˜์ •] 'onStartGame' ๋Œ€์‹  'availableGames' ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฃผ์ž…๋ฐ›์Œ // final List availableGames; // const HomeScreen({ // super.key, // required this.availableGames, // ๐Ÿ‘ˆ ์ƒ์„ฑ์ž ๋ณ€๊ฒฝ // }); // @override // State createState() => _HomeScreenState(); // } // class _HomeScreenState extends State { // // ๐Ÿ”ฝ [์‚ญ์ œ] ์Šค๋„์ฟ  ์ „์šฉ ์ƒํƒœ ๋ณ€์ˆ˜๋“ค ๋ชจ๋‘ ์‚ญ์ œ // // int _maxUnlockedLevel = 1; // // Map _rankHistory = {}; // // String? _userName; // // late String _selectedThemeName; // // bool _isLoading = false; // // ๐Ÿ”ฝ [์‚ญ์ œ] ์Šค๋„์ฟ  ์ „์šฉ ์„œ๋น„์Šค๋“ค ์‚ญ์ œ // // final PuzzleService _puzzleService = PuzzleService(); // // final IdentityService _identityService = IdentityService(); // @override // void initState() { // super.initState(); // // ๐Ÿ”ฝ [์‚ญ์ œ] _loadProgress() ๋“ฑ ์Šค๋„์ฟ  ์ „์šฉ ๋กœ์ง ์‚ญ์ œ // } // // ๐Ÿ”ฝ [์‚ญ์ œ] _loadProgress ๋ฉ”์„œ๋“œ ์ „์ฒด ์‚ญ์ œ // // Future _loadProgress() async { ... } // @override // Widget build(BuildContext context) { // context.watch(); // final theme = Theme.of(context); // return Scaffold( // appBar: AppBar( // // ๐Ÿ”ฝ [์ˆ˜์ •] ์•ฑ ์ด๋ฆ„์€ main.dart์—์„œ ์„ค์ •ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„  ๋น„์›€ // title: const Text('๊ฒŒ์ž„ ์„ผํ„ฐ'), // actions: [ // IconButton( // icon: const Icon(Icons.settings_outlined), // onPressed: () { // Navigator.push( // context, // MaterialPageRoute( // builder: (context) => const SettingsScreen(), // ), // ); // }, // ), // ], // ), // body: LayoutBuilder( // builder: (context, constraints) { // const double maxContentRatio = 0.6; // final double constrainedWidth = (constraints.maxHeight * maxContentRatio) > 500 // ? 500 : (constraints.maxHeight * maxContentRatio); // return Center( // child: ConstrainedBox( // constraints: BoxConstraints(maxWidth: constrainedWidth), // child: Column( // children: [ // // ๐Ÿ”ฝ [์‚ญ์ œ] ์Šค๋„์ฟ  ์ „์šฉ 'ํ…Œ๋งˆ ์„ ํƒ' Dropdown ์‚ญ์ œ // // 2. ๋ ˆ๋ฒจ ์„ ํƒ ๋ฆฌ์ŠคํŠธ (๋ฒ”์šฉ์œผ๋กœ ๋ณ€๊ฒฝ) // Expanded( // // ๐Ÿ”ฝ [์ˆ˜์ •] ListView.builder๊ฐ€ ์ฃผ์ž…๋ฐ›์€ 'widget.availableGames' ์‚ฌ์šฉ // child: ListView.builder( // itemCount: widget.availableGames.length, // itemBuilder: (context, index) { // final GameInfo game = widget.availableGames[index]; // return Card( // margin: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0), // child: ListTile( // leading: Icon( // game.icon, // ๐Ÿ‘ˆ GameInfo์—์„œ ์•„์ด์ฝ˜ ๊ฐ€์ ธ์˜ค๊ธฐ // color: theme.primaryColor, // ), // title: Text(game.name, style: const TextStyle( // ๐Ÿ‘ˆ GameInfo์—์„œ ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ // fontSize: 18, // fontWeight: FontWeight.bold, // )), // trailing: const Icon(Icons.play_arrow_rounded), // // ๐Ÿ”ฝ [์ˆ˜์ •] onTap์— ์ฃผ์ž…๋ฐ›์€ game.onTap ํ•จ์ˆ˜ ์—ฐ๊ฒฐ // onTap: game.onTap, // ), // ); // }, // ), // ), // // 3. ๋žญํ‚น ๋ณด๊ธฐ ๋ฒ„ํŠผ (๋žญํ‚น ์Šคํฌ๋ฆฐ์€ ๊ณตํ†ต์ด๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ๋‘ ) // Container( // margin: const EdgeInsets.fromLTRB(16.0, 0, 16.0, 8.0), // // ... (์ดํ•˜ ๋žญํ‚น ๋ณด๊ธฐ ๋ฒ„ํŠผ ์Šคํƒ€์ผ์€ ๋™์ผ) ... // child: InkWell( // onTap: () { // // ๐Ÿ”ฝ [์ˆ˜์ •] ์Šค๋„์ฟ  ๋ ˆ๋ฒจ ๋Œ€์‹  ๊ธฐ๋ณธ ๋žญํ‚น ํ™”๋ฉด์œผ๋กœ // Navigator.push( // context, // MaterialPageRoute( // builder: (context) => const RankingScreen( // // initialDifficultyName: "์ค‘๊ธ‰ (9x9)", // ๐Ÿ‘ˆ ํ•„์š”์‹œ ํ•˜๋“œ์ฝ”๋”ฉ // ), // ), // ); // }, // child: Container( // width: double.infinity, // padding: const EdgeInsets.symmetric(vertical: 14.0), // child: Text( // '๐Ÿ† ์ „์ฒด ๋žญํ‚น ๋ณด๊ธฐ', // textAlign: TextAlign.center, // style: TextStyle( // fontSize: 16, // fontWeight: FontWeight.bold, // color: theme.colorScheme.onSurfaceVariant, // ), // ), // ), // ), // // ... // ), // ], // ), // ), // ); // }, // ), // bottomNavigationBar: const AdBannerWidget(), // ); // } // }