import 'package:flutter/material.dart'; import 'package:minehunter/layout/game.dart'; import 'package:minehunter/layout/parameters.dart'; import 'package:minehunter/provider/data.dart'; import 'package:minehunter/utils/game_utils.dart'; import 'package:provider/provider.dart'; import 'package:overlay_support/overlay_support.dart'; class Home extends StatefulWidget { static const String id = 'home'; @override _HomeState createState() => _HomeState(); } class _HomeState extends State<Home> { @override void initState() { super.initState(); Data myProvider = Provider.of<Data>(context, listen: false); myProvider.initParametersValues(); } List getImagesAssets(Data myProvider) { List assets = []; List gameImages = [ 'button_back', 'button_start', 'game_fail', 'game_win', ]; myProvider.availableLevelValues.forEach((level) => gameImages.add('level_' + level)); myProvider.availableSizeValues.forEach((size) => gameImages.add('size_' + size)); gameImages.forEach((image) => assets.add('assets/icons/' + image + '.png')); List skinImages = [ 'button_mark_mine_off', 'button_mark_mine_on', 'indicator_report_on', 'indicator_report_off', 'indicator_walk_on', 'indicator_walk_off', 'tile_flag_ko', 'tile_flag_ok', 'tile_flag', 'tile_mine_not_found', 'tile_mine', 'tile_unknown', ]; for (int value = 0; value < 9; value++) { skinImages.add('tile_' + value.toString()); } skinImages.forEach((image) => assets.add('assets/skins/default_' + image + '.png')); assets.add('assets/skins/default_empty.png'); return assets; } @override Widget build(BuildContext context) { Data myProvider = Provider.of<Data>(context); if (!myProvider.assetsPreloaded) { List assets = getImagesAssets(myProvider); assets.forEach((asset) => precacheImage(AssetImage(asset), context)); myProvider.updateAssetsPreloaded(true); } List<Widget> menuActions = []; if (myProvider.gameIsRunning) { menuActions = [ TextButton( child: Container( child: Image( image: AssetImage('assets/icons/button_back.png'), fit: BoxFit.fill, ), ), onPressed: () => toast('Long press to quit game...'), onLongPress: () => GameUtils.quitGame(myProvider), ), ]; } return Scaffold( appBar: AppBar( actions: menuActions, ), body: SafeArea( child: Center( child: myProvider.gameIsRunning ? Game.buildGameWidget(myProvider) : Parameters.buildParametersSelector(myProvider), ), ), ); } }