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 默认情况下是一个空列表,您将不知道您期望的列表是否 真的 是空的还是有问题。
这只是一个关于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 默认情况下是一个空列表,您将不知道您期望的列表是否 真的 是空的还是有问题。