如何在 Flutter 中当变量为真时显示列?

How to display a column when a variable is true in Flutter?

我一直收到 res is not defined 这个错误,所以我想弄清楚如何 运行 像在 js 中那样定义 res 之后的列代码,你可以 {res && (code)}

Column(
 children: res['rooms'].map((r) => Card(
      'name',
      '${r['messages'][r['messages'].length - 1]['content']}',
      '${r['_id']}'
 )),
),

您可以检查您的 res 变量是否等于 null

这是针对您的问题的非空方法,但您应该检查以将项目迁移到空安全以避免所有这些空检查。

            res == null
                ? Column(
                    children: res['rooms'].map((r) => Card(
                        'name',
                        '${r['messages'][r['messages'].length - 1]['content']}',
                        '${r['_id']}')),
                  )
                : Container(),

如果表达式中有一个大的小部件,有时很难阅读三元表达式。它还要求您提供一个“其他”小部件。

我用扩展运算符来解决这个问题,用一个 if 语句

Column(
  children: <Widget>[
    if (res != null)
    ...res.map((r) => Card(
        'name',
        '${r['messages'][r['messages'].length - 1]['content']}',
        '${r['_id']}')),
  ],
)

像这样简单使用三元登录-

Container(
    child: res != null
        ? Column(
              children: []
          )
        : SizedBox()  //Use SizedBox instead of Container for better efficiency
)

并在填充“res”后再次更新 UI。