我试图访问一个列表,但前提是它不为空。在收到一些奇怪的路径后,我发现List.isNotEmpty返回的长度为0,并且它不为空。当然,除非我认为“空”是错误的思维方式?
下面是我运行的测试,我创建了一个“空”列表,然后测试isNotEmpty,看看返回了什么。
List<String> myKeywords = [];
if(myKeywords.isNotEmpty){
print("Keywords is not empty..?");
print("Keywords length = ${myKeywords.length}");
print("Keyword: \"${myKeywords.first}\"");
}
//输出
Keywords is not empty..?
Keywords length = 0
// Error: Bad state: No element
这与字符串的工作方式不同:
String myString = "";
if(myString.isNotEmpty){
print("myString is not empty..?");
print("myString length = ${myString.length}");
}
else{
print("myString is empty");
}
输出:
myString is empty
查看文档,List.isNotEmpty声明如下:
Whether this collection has at least one element.
May be computed by checking if iterator.moveNext() returns true.
Example:
final numbers = {1, 2, 3};
print(numbers.isNotEmpty); // true;
print(numbers.iterator.moveNext()); // true
有人能给我解释一下吗?或者,也许这是一个错误?
Android Studio Dart软件开发工具包版本- 2.19.4(稳定)Flutter版本- 3.7.7(稳定)
谢谢大家!
3条答案
按热度按时间gcuhipw91#
它实际上按预期工作。请尝试调试您的程序,因为上述输出不正确
isNotEmpty
和初始化之间没有添加任何元素。*下面代码的输出为:
下面的代码应该返回
Keywords is empty
。检查此DartPad链接。
6l7fqoea2#
我认为Flutter有一些问题,我在DartPad中测试了一下,效果很好。
Here是DartPad链接。
我建议您在Github上的the Flutter repository中打开一个问题。
7eumitmz3#
尝试: