我在下面创建了一个函式
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热心网友回复:
我重新创建了代码,它对我有用,但有一些例外:
- Answer(selectHandler: nextQuestion(), answer: 'Yellow'),错了。你必须使用selectHandler:nextQuestion(函式后没有())
- 在另一个有状态小部件中使用答案小部件。
如果你做了所有这些但它仍然不起作用运行 flutter clean 然后 flutter pub get (首先关闭除错会话)
如果这不起作用,则问题出在您的问题小部件上。你能分享一下代码吗?
0 评论