小部件库'!children.any((Widget child)=> child == null)'抛出的异常:不正确

问题描述 投票:2回答:3

嗨,我在运行应用程序时收到以下错误,可能是该问题的原因?

W小工具图书馆的例外情况╞═​​════════════════════════════════════════ ══════════════════在构建Home(dirty,state:_HomeState#f7a67)时引发了以下断言:'package:flutter / src / widgets / framework.dart':断言失败:1639行:'!children.any((Widgetchild)=> child == null)':不正确。 
widget dart stack-trace flutter
3个回答
10
投票

几天前遇到了同样的问题。

这种情况发生在您忘记或错过return小部件时。

没有看到您的代码,很难知道确切的故障点。

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

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

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

修复后::

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

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

希望这会有所帮助!


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


0
投票

就我而言,buildChildrenren的结果为null,或者返回列表中的一个元素为null。

Column column = new Column(
  // center the children
  mainAxisAlignment: MainAxisAlignment.start,
  crossAxisAlignment: CrossAxisAlignment.stretch,
  children: buildChildren(context),
);
© www.soinside.com 2019 - 2024. All rights reserved.