首页 > 解决方案 > 更新文本小部件 onTap

问题描述

我有一个文本小部件,我想在其中将文本更改为问题和答案变量 ontap,但它没有任何帮助。问题和答案字符串是从上一页传递的。在此页面上,它首先显示问题,当用户点击该文本小部件时,问题必须更改为回答文本。但是不更新不知道为什么。我是初学者请帮忙

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;
              }
            });
          },
        ))),
    );
  }
}

标签: flutterdartsetstate

解决方案


点击后,cardDetails 再次被分配相同的值build

String cardDetails = widget.question;    

改为这样做

class _ShowCardState extends State<ShowCard> {

  String cardDetails;

  @override
  void initState() {
    cardDetails = widget.question;
    super.initState();
  }


 @override
 Widget build(BuildContext context) {
 ...

推荐阅读