【问题标题】:!children.any((Widget child) => child==null) is not true!children.any((Widget child) => child==null) 不正确
【发布时间】:2018-07-22 15:49:52
【问题描述】:

当我构建行并根据我拥有的特定列表中的值用不同的图标填充它时,我收到此错误(图像:the actual error on running in emulator)。 这是代码的一部分: (注意我在这两种情况下都返回了一些小部件!)

 new Container(
          padding: new EdgeInsets.fromLTRB(0.0, 19.0, 0.0, 19.0),
          child: new Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children:
              (ballwiseDetails.length==0)?(List<Widget>.generate(6,(index) {
                setState(() {
                  return new Icon(Icons.add);
                });
              })):
                  List<Widget>.generate(ballwiseDetails.length,(index) {
                setState(() {
                  (index >= (6 * (overNumber - 1)))
                      ? (getIcon(ballwiseDetails[index].ball["TypeOfBall"])):null;
                });
              })
              ))

getIcon 方法:-

Container getIcon(case_Each_Ball ib) {
String text = "O";
switch (ib) {
  case case_Each_Ball.dot:
    text = "O";
    break;
  case case_Each_Ball.Singles:
    text = "1";
    break;
  case case_Each_Ball.Doubles:
    text = "2";
    break;
  case case_Each_Ball.Triples:
    text = "3";
    break;
  case case_Each_Ball.Four:
    text = "4";
    break;
  case case_Each_Ball.Six:
    text = "6";
    break;
  case case_Each_Ball.WD:
    text = "WD";
    break;
  case case_Each_Ball.WD4:
    text = "4WD";
    break;
  case case_Each_Ball.Five:
    text = "5";
    break;
  case case_Each_Ball.OUT:
    text = "OUT";
    break;
  case case_Each_Ball.NB:
    text = "NB";
    break;
  default:
}
return new Container(
  decoration: new BoxDecoration(
      shape: BoxShape.circle,
      color: (ib == case_Each_Ball.OUT)
          ? Colors.red[800]
          : Colors.yellow[800]),
  child: Padding(
    padding: const EdgeInsets.all(8.0),
    child: new Text(text),
  ),
);

}

【问题讨论】:

  • 同意@aziza 的回答。我认为您不必将return new Icon(Icons.add) 放在setState() 中。同样的还有一个 setState()
  • 我添加了这一行 cz 我认为错误是由于 ballwiseDetails 列表的长度在开始时始终为零。

标签: null dart flutter children


【解决方案1】:

使您的最后一个else 条件不返回null,而是返回一个空的Container()

(index >= (6 * (overNumber - 1)))
                      ? (getIcon(ballwiseDetails[index].ball["TypeOfBall"])):Container();

【讨论】:

  • 我现在写的正是这个。但我遇到了同样的错误
  • 然后我写了 return new Container () ;而不是jst Container(); Cz 我意识到我必须返回一些东西。但仍然没有结果!!同样的错误!
  • 检查您的代码,这很简单,您必须始终在每种情况下返回一些小部件,如果您通过网络请求获取列表,请确保您有某种占位符
  • List.generate((ballwiseDetails.length==0)?(6):(ballwiseDetails.length), (index) { setState(() { if (ballwiseDetails.length == 0) { return new Icon(Icons.add); } else if (index >= (6 * (overNumber - 1))) { getIcon(ballwiseDetails[index].ball["TypeOfBall"]); } else { return new容器(); } }); }) )
  • 我就是这么做的。我要为几乎所有东西返回一些东西。结帐^
猜你喜欢
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
相关资源
最近更新 更多