【问题标题】:flutter- I don't know the difference between these two case颤振-我不知道这两种情况之间的区别
【发布时间】:2021-02-03 14:58:56
【问题描述】:

案例一:

    children: DUMMY_CATEGORIES.map((catData) {
      CategoryItem(
        catData.title,
        catData.color,
      );
    }).toList(),

案例 2:

    children: DUMMY_CATEGORIES
        .map(
          (catData) => CategoryItem(
                catData.title,
                catData.color,
              ),
        )
        .toList(),

案例 1 导致错误。 这两种情况不是相同的语法吗? 为什么会出现这个错误?

════════ 渲染库捕获的异常═════════════════════════════ 用于空值的空检查运算符 相关的导致错误的小部件是 网格视图 lib\categories_screen.dart:12 ══════════════════════════════════════════════════ ═══════════

【问题讨论】:

  • 在案例 1 中,您在“CategoryItem”之前缺少返回关键字。案例 2 在箭头之后立即返回。

标签: flutter dart gridview


【解决方案1】:

案例 2 使用 Fat Arrow ExpressionLambda 函数表达式,这是一种使用 => 语法在单行上编写函数的语法又名胖箭。 more info

DUMMY_CATEGORIES.map(
  (catData) => CategoryItem(
    catData.title,
    catData.color,
  ),
).toList(),

粗箭头语法:

(args) => expression

如果expression 具有返回类型(在您的情况下为 CategoryItem),则它直接返回。

与您的案例1相同,带有return语句:

DUMMY_CATEGORIES.map(
  (catData) {
    return CategoryItem(
      catData.title,
      catData.color,
    ),
  }
).toList(),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 2021-01-17
    • 2018-10-09
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多