Flutter null 或空列表

Flutter null or emptylist

这只是一个关于dart/flutter代码的小问题。 我今天看到这段代码:

     Future<List<String>?> getAtSignListFromKeychain() async {
    var atsignMap = await _getAtSignMap();
    if (atsignMap.isEmpty) {
      // no atsigns found in biometric storage
      // read entries from flutter keychain
      // for mobile platforms only
      if (Platform.isAndroid || Platform.isIOS) {
        atsignMap = await checkForValuesInFlutterKeychain();
        if (atsignMap.isEmpty) {
          return null;
        }
      } else {
        return null;
      }
    }
    var atsigns = atsignMap.keys.toList();
    _logger.info('Retrieved atsigns $atsigns from Keychain');
    return atsigns;
  }

我不明白用 List 返回 null 有什么好处? .写这段代码不是更好吗?:

     Future<List<String>> getAtSignListFromKeychain() async {
    var atsignMap = await _getAtSignMap();
    if (atsignMap.isEmpty) {
      // no atsigns found in biometric storage
      // read entries from flutter keychain
      // for mobile platforms only
      if (Platform.isAndroid || Platform.isIOS) {
        atsignMap = await checkForValuesInFlutterKeychain();
        if (atsignMap.isEmpty) {
          return atsignMap;
        }
      } else {
        return List.empty();
      }
    }
    var atsigns = atsignMap.keys.toList();
    _logger.info('Retrieved atsigns $atsigns from Keychain');
    return atsigns;
  }

或者我遗漏了什么?谢谢!

首先,不同的问题总是有不同的解决方法。我认为在某些情况下 return 一个 null value 比在内存中创建一个 empty list 然后 return 更好。无论哪种方式,您都必须检查 returning value、处理错误等。因此,您可以只使用 ?? 运算符而不是检查列表是否为空。

并且在某些情况下,您期望的包含项目的列表可能是空的。如果在这种情况下您 return 默认情况下是一个空列表,您将不知道您期望的列表是否 真的 是空的还是有问题。