Я создаю приложение для викторины. В настоящее время оно имеет две страницы - экран загрузки (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]),
),
],
),
),
),
);
}
} ```