拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 即使在使用setState之后onPressed也不执行Function

即使在使用setState之后onPressed也不执行Function

白鹭 - 2022-02-12 1982 0 0

我在下面创建了一个函式

nextQuestion() {
    setState(() {
      questionIndex  ;
    });
    print('pressed');
  }

然后我创建了下面的类,并在上面的方法中传递了一个 onPressed 属性的建构式

class Answer extends StatelessWidget {
  final String answer;
  final VoidCallback? selectHandler;
  // ignore: use_key_in_widget_constructors
  const Answer({required this.answer, this.selectHandler});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: selectHandler,
      child: SizedBox(
        width: double.infinity,
        child: Center(
          child: Text(
            answer,
          ),
        ),
      ),
    );
  }
}

然后我使用类的建构式并传入函式来更新我荧屏上的文本,该文本位于以questionIndex作为索引的串列中

Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          Question(question: questions[questionIndex]),
          Answer(selectHandler: nextQuestion(), answer: 'Yellow'),
          Answer(selectHandler: nextQuestion(), answer: 'Yellow'),
          Answer(selectHandler: nextQuestion(), answer: 'Yellow'),
        ],
      ),

这不起作用/按下按钮后不更新荧屏上的文本

uj5u.com热心网友回复:

我重新创建了代码,它对我有用,但有一些例外:

  1. Answer(selectHandler: nextQuestion(), answer: 'Yellow'),错了。你必须使用selectHandler:nextQuestion(函式后没有())
  2. 在另一个有状态小部件中使用答案小部件。

如果你做了所有这些但它仍然不起作用运行 flutter clean 然后 flutter pub get (首先关闭除错会话)

如果这不起作用,则问题出在您的问题小部件上。你能分享一下代码吗?

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *