Flutter 更新文本窗口小部件onTap
我有一个文本小部件,我想将文本更改为问答变量ontap,但它无法帮助任何人。 正在从上一页传递问题和答案字符串。 在此页面上,首先显示问题,当用户点击文本小部件时,问题必须更改为回答文本。 但它没有更新,我不知道为什么。我是初学者,请帮忙Flutter 更新文本窗口小部件onTap,flutter,dart,setstate,Flutter,Dart,Setstate,我有一个文本小部件,我想将文本更改为问答变量ontap,但它无法帮助任何人。 正在从上一页传递问题和答案字符串。 在此页面上,首先显示问题,当用户点击文本小部件时,问题必须更改为回答文本。 但它没有更新,我不知道为什么。我是初学者,请帮忙 import 'package:flutter/material.dart'; class ShowCard extends StatefulWidget { final String question; final String answer;
import 'package:flutter/material.dart';
class ShowCard extends StatefulWidget {
final String question;
final String answer;
ShowCard({@required this.question, @required this.answer}); //accepting question and answer
@override
_ShowCardState createState() => _ShowCardState();
}
class _ShowCardState extends State<ShowCard> {
@override
Widget build(BuildContext context) {
String cardDetails = widget.question; //initializing question text
return Scaffold(
body: Center(
child: Container(
child: GestureDetector(
child: Text(cardDetails),
onTap: () {
setState(() {
if (cardDetails == widget.question) {
cardDetails = widget.answer;
} else {
cardDetails = widget.question;
}
});
},
))),
);
}
}
导入“包装:颤振/材料.省道”;
类ShowCard扩展StatefulWidget{
最后一道弦乐题;
最后的字符串答案;
展示卡({@required this.question,@required this.answer});//接受问答
@凌驾
_ShowCardState createState()=>\u ShowCardState();
}
类_ShowCardState扩展状态{
@凌驾
小部件构建(构建上下文){
String cardDetails=widget.question;//初始化问题文本
返回脚手架(
正文:中(
子:容器(
儿童:手势检测器(
子项:文本(cardDetails),
onTap:(){
设置状态(){
if(cardDetails==widget.question){
cardDetails=widget.answer;
}否则{
cardDetails=widget.question;
}
});
},
))),
);
}
}
点击后,cardDetails会在构建中再次分配相同的值
String cardDetails = widget.question;
就这样做吧
class _ShowCardState extends State<ShowCard> {
String cardDetails;
@override
void initState() {
cardDetails = widget.question;
super.initState();
}
@override
Widget build(BuildContext context) {
...
class\u ShowCardState扩展状态{
字符串详细信息;
@凌驾
void initState(){
cardDetails=widget.question;
super.initState();
}
@凌驾
小部件构建(构建上下文){
...
在生成函数之外声明cardDetails初始化,否则,它会为每个生成重置。您可以复制以下代码:
import 'package:flutter/material.dart';
class ShowCard extends StatefulWidget {
final String question;
final String answer;
ShowCard({@required this.question, @required this.answer}); //accepting question and answer
@override
_ShowCardState createState() => _ShowCardState();
}
class _ShowCardState extends State<ShowCard> {
String cardDetails = widget.question; //initializing question text
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
child: GestureDetector(
child: Text(cardDetails),
onTap: () {
setState(() {
if (cardDetails == widget.question) {
cardDetails = widget.answer;
} else {
cardDetails = widget.question;
}
});
},
))),
);
}
}
导入“包装:颤振/材料.省道”;
类ShowCard扩展StatefulWidget{
最后一道弦乐题;
最后的字符串答案;
展示卡({@required this.question,@required this.answer});//接受问答
@凌驾
_ShowCardState createState()=>\u ShowCardState();
}
类_ShowCardState扩展状态{
String cardDetails=widget.question;//初始化问题文本
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
子:容器(
儿童:手势检测器(
子项:文本(cardDetails),
onTap:(){
设置状态(){
if(cardDetails==widget.question){
cardDetails=widget.answer;
}否则{
cardDetails=widget.question;
}
});
},
))),
);
}
}
将其放入initState
中。String cardDetails=widget.question;