flutter 3.24.2 语法 bug ---> null 直接变成 'null'

43 阅读1分钟
String? get clientDefaultName => switch (this) {
      schoolProvince => '全国',
      schoolFeature => '不限',
      schoolOwnership => null,
      schoolLevel => null,
      schoolType => '不限',
      examType => '不限',
      admissionType => '不限',
      region => null,
      category => null,
      shortlistRatio => '不限',
      assessmentMethod => '不限',
    };
return FilterGroup(
  type: groupType,
  code: apiFilterItem.code,
  items: [
    //这里有一个特殊的情况,接口返回的分类数据中,没有返回有默认项的值
    //如果有需要,客户端须自行按原型添加一个默认项
    if (groupType.clientDefaultName case String defaultName
        when defaultName.trim().isNotEmpty)
      FilterItem(
        name: defaultName,
        value: '',
        isSelected: true,
        isDefault: true,
        isAll: true,
      ),
    ...apiFilterItem.list
        .where((itemName) => itemName.trim().isNotEmpty)
        .map((itemName) => FilterItem(
              name: itemName,
              value: itemName,
            ))
        .toList(),
  ],
);

debug 没问题,release 神奇的出现了

神奇的字段 name:null - {name: null, value: , isSelected: true, isDefault: true, isAll: true}

if (groupType.clientDefaultName case String defaultName when defaultName.trim().isNotEmpty) 完全起不到预期作用

改成

String get clientDefaultName => switch (this) {
      schoolProvince => '全国',
      schoolFeature => '不限',
      schoolOwnership => '',
      schoolLevel => '',
      schoolType => '不限',
      examType => '不限',
      admissionType => '不限',
      region => '',
      category => '',
      shortlistRatio => '不限',
      assessmentMethod => '不限',
    };