listType(example) {
var x = example.runtimeType;
if (x == List) {
return true;
} else {
return false;
}
}
print(listType([1, 2, 3, 4]));
您可以将交换x==List与x==List<int>看看区别!!!
只要返回类型是列表,我如何使runtimeType始终返回true?
如果您想检查类型,请使用is
,而不要使用runtimeType
,因为它会使x
成为非list<int>
的类型,如下所示:
listType(example) {
if (example is List) { //<--- here
return true;
} else {
return false;
}
}
bool listType<T>(example){
return example is List<T>;
}
示例:
print(listType<int>([1,2,3])) //true
print(listType<dynamic>([1,2,3])) //true
print(listType([1,2,3])) //true
print(listType([1,2,"someString"])) //true
print(listType<int>([1,2,"someString"])) //false
如果您想检查特定类型的列表,如int列表或字符串列表。
你可以这样试试:
listType(example) {
switch(example.runtimeType){
case List<int>:
print("int");
break;
case List<String>:
print("String");
break;
case List<double>:
print("double");
break;
}
}