#flutter #dart
Вопрос:
Я разработал игру. теперь, когда я нажимаю кнопку с повышением.. Я хочу, чтобы моя игра возобновилась. Как я могу сделать это в мгновение ока??
import 'dart:math';
import 'package:flutter/material.dart';
void main() {
runApp(const GameUI());
}
class GameUI extends StatefulWidget {
const GameUI({Key? key}) : super(key: key);
@override
_GameUIState createState() => _GameUIState();
}
class _GameUIState extends State<GameUI> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Center(child: Text('Block Memory Game')),
),
body: Stack(children: [
/* Here is the whole game code
Here whole game is in the stack And this last Align contains restart button */
Align(
alignment: Alignment.bottomCenter,
child: ElevatedButton(
onPressed: (){
//what code to write here to restart the application
},
child:
const Text('Restart Game')
),
)
]),
),
);
}
Когда мы нажимаем кнопку hotRestart, приложение запускается так же, как я хочу, чтобы это происходило, когда я нажимаю на Restart Game
кнопку
Ответ №1:
Оберните свое приложение StatefulWidget
, а затем дайте ему ключ после этого, когда вы обновляете ключ, приложение перезапускается, как указано ниже в restartGame()
функции. Также вы можете получить доступ к этой функции из любого места с помощью этой строки:
Game.restartGame(context)
class game extends State<Game> {
Key key = UniqueKey();
void restartGame() {
setState(() {
key = UniqueKey();
});
}
@override
Widget build(BuildContext context) {
return KeyedSubtree(
key: key,
child: Game(),
);
}
}
Комментарии:
1. Разве подчеркивание имени класса
class _game
не является плохой практикой? Это создает частные переменные и методы класса, но не должно использоваться для класса. Или я ошибаюсь?2. Спасибо Вам за ответ. Можете ли вы разъяснить мне ответ, поскольку я не перезапускаю приложение, это просто горячая перезагрузка. Я хочу менять значения игры при каждом перезапуске. код, который вы предоставили, просто позволяет мне запустить один и тот же экземпляр игры с первого раза. помоги мне с этим, пока я здесь застрял. и даже
Game.restartGame(context)
выдает мне ошибку. Если вам нужны какие-то данные об игре, я их предоставлю.3. @Tanguy Да, вы правы, я просто устанавливал имя.