Как сохранить значение и увеличить его в виджете с отслеживанием состояния во флаттере? - PullRequest
0 голосов
/ 04 мая 2020

Я создаю приложение для викторины. В настоящее время оно имеет две страницы - экран загрузки (QuizPage ()), который выбирает вопрос из API, и LivePage (), который отображает полученные вопросы. Чтобы получить следующий вопрос, вернемся к экрану загрузки. Я хочу получить оценку игрока, но поскольку мое приложение каждый раз выходит на экран загрузки, чтобы получить следующий вопрос, значение, сохраненное в LivePage (), сбрасывается.


  @override
  _QuizPageState createState() => _QuizPageState();
}

class _QuizPageState extends State<QuizPage>{

  @override
  void initState() {
    super.initState();
    getQuestion();
  }

  Future getQuestion() async{
  NetworkHelper net = NetworkHelper();
  var data = await net.networkHelper();
  var unescape = new HtmlUnescape();
  String question = unescape.convert(data["results"][0]["question"]);
  String answer = unescape.convert(data["results"][0]["correct_answer"]);
  String c1 = unescape.convert(data["results"][0]["incorrect_answers"][0]);
  String c2 = unescape.convert(data["results"][0]["incorrect_answers"][1]);
  String c3 = unescape.convert(data["results"][0]["incorrect_answers"][2]);
  List q = [answer,c1,c2,c3];
  q.shuffle();
  Navigator.push(context, MaterialPageRoute(builder: (context) => LivePage(answer: answer, question: question, choices: q, )));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SpinKitCircle(
          size: 100,
          color: Colors.black87,
        ),
      ),
    );
  }
} 



class LivePage extends StatefulWidget{

  final List choices;
  final String question;
  final String answer;
  LivePage({this.choices, this.question, this.answer});

  @override
  _LivePageState createState() => _LivePageState();
}

class _LivePageState extends State<LivePage>{

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          body: Column(
            children: <Widget>[
              Text(widget.question, style: TextStyle(
                fontSize: 20,
              ),),
              RaisedButton(
                  onPressed: () => checkAnswer(widget.choices[0]),
                  child: Text(widget.choices[0]),
              ),
              RaisedButton(
                onPressed: () => checkAnswer(widget.choices[1]),
                child: Text(widget.choices[1]),
              ),
              RaisedButton(
                onPressed: () => checkAnswer(widget.choices[2]),
                child: Text(widget.choices[2]),
              ),
              RaisedButton(
                onPressed: () => checkAnswer(widget.choices[3]),
                child: Text(widget.choices[3]),
              ),
            ],
          ),
        ),
      ),
    );
  }
} ```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...