为 RaisedButton 调用 ListView
Posted
技术标签:
【中文标题】为 RaisedButton 调用 ListView【英文标题】:Call ListView for a RaisedButton 【发布时间】:2021-03-07 18:07:54 【问题描述】:我的 Flutter 代码有问题。 我想将 ListView _aAntwort() 作为 RaisedButton 中的文本调用。 在模拟中显示错误:“堆栈溢出”。 谁能帮帮我?
感谢您的大力支持:)
RaisedButton( //StatefulWidget
onPressed: () ,
child: _aAntwort(), //ERROR
),
Widget randAnswer()
var list = <String>['aAnswer', 'bAnswer', 'cAnswer', 'dAnswer'];
var rand = new Random();
int i = rand.nextInt(list.length);
iAnswer = list[i];
list.removeAt(i);
int ii = rand.nextInt(list.length);
iiAnswer = list[ii];
list.removeAt(ii);
int iii = rand.nextInt(list.length);
iiiAnswer = list[iii];
list.removeAt(iii);
int iiii = rand.nextInt(list.length);
iiiiAnswer = list[iiii];
list.removeAt(iiii);
return randAnswer();
ListView _aAntwort()
if (iAnswer == "aAnswer")
return aAnswer();
else if (iAnswer == "bAnswer")
return bAnswer();
else if (iAnswer == "cAnswer")
return cAnswer();
else if (iAnswer == "dAnswer")
return dAnswer();
return _aAntwort(); // I want to call this one
ListView aAnswer()
return ListView.builder(
.....
【问题讨论】:
你遇到了什么错误? 请再次尝试解释问题。 【参考方案1】:在 _aAntwort() 中,您默认返回 _aAntwort()。这将导致无休止的递归调用。您需要返回类似 aAnswer 或 noAnswer 的内容
ListView _aAntwort()
if (iAnswer == "aAnswer")
return aAnswer();
else if (iAnswer == "bAnswer")
return bAnswer();
else if (iAnswer == "cAnswer")
return cAnswer();
else if (iAnswer == "dAnswer")
return dAnswer();
return _noAnswer();
【讨论】:
感谢您的帮助,但我不明白您的意思。你能改进我的代码吗? 谢谢,我现在明白了。但是我现在如何在 RaisedButton 中将 _aAntwort() 显示为文本? 不知道你的意思。 aAntwort 返回一个要在按钮中显示的小部件。如果要输出文本,返回 Text(“what ever”); 是的,我想显示小部件 aAnswer 但模拟中的按钮是空的。 你有系统地测试过吗?我会确保任何随机随机结果调用 aAnswer。然后在 aAnswer 中我只会返回一个简单的 Text 小部件。如果这不起作用,请将 aAnswer 调用替换为 Text 小部件。让它尽可能简单,直到它起作用,然后逐步添加复杂性以上是关于为 RaisedButton 调用 ListView的主要内容,如果未能解决你的问题,请参考以下文章
Flutter - 如何在点击时切换 RaisedButton 的颜色?
Flutter中常用的按钮组件-RaisedButton(凸起的按钮)
Flutter中常用的按钮组件-RaisedButton(凸起的按钮)
如何通过 Flutter 中的 RaisedButton 传递/绑定值?