为 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 传递/绑定值?

警告:'RaisedButton' 已弃用,不应使用。改用 ElevatedButton

Flutter-如何以编程方式触发RaisedButton?