小部件库'!children.any((Widget child)=> child == null)'引发的异常:不是真的

时间:2018-03-08 07:12:08

标签: widget dart stack-trace flutter

您好我在运行应用程序时遇到以下错误问题的可能原因是什么?

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Home(dirty, state: _HomeState#f7a67):
'package:flutter/src/widgets/framework.dart': Failed assertion: line 1639: '!children.any((Widget
child) => child == null)': is not true. 

3 个答案:

答案 0 :(得分:9)

几天前面临同样的问题。

当您忘记或错过返回小工具时,就会发生这种情况。

如果没有看到您的代码,就很难知道确切的失败点。

就我而言,我之前的代码如下:

@override
Widget build(BuildContext context) {
//....

  new Column(
  //.....
  );
}

修好之后::

@override
Widget build(BuildContext context) {
//....

  return new Column(
  //.....
  );
}

希望这有帮助!

答案 1 :(得分:1)

如果小部件列表中没有null,也可能会出现此问题:

Widget build() {
  return new Column(
    children: [
      new Title(),
      new Body(),
      shouldShowFooter ? null : new Container()
    ]
  );
}

要解决此问题:

bool notNull(Object o) => o != null;
Widget build() {
  return new Column(
    children: <Widget>[
      new Title(),
      new Body(),
      shouldShowFooter ? new Footer() : new Container()
    ].where(notNull).toList(),
  );
}

更多信息: https://github.com/flutter/flutter/issues/3783

答案 2 :(得分:0)

对于我来说,buildChildrenren的结果为null,或者返回列表中的一个元素为null。

Column column = new Column(
  // center the children
  mainAxisAlignment: MainAxisAlignment.start,
  crossAxisAlignment: CrossAxisAlignment.stretch,
  children: buildChildren(context),
);