首页 > 解决方案 > 名称 'string' 不是类型,不能在 'is' 表达式中使用

问题描述

在对返回不同类型对象的函数进行单元测试期间,我需要检查返回对象的类型是否与预期的相同。因此,我需要在一个变量中传递多个类。然后我需要将此变量与is运算符一起使用来检查类型。

final string = String;
assert('foo' is string);

但我越来越

error: The name 'string' isn't a type and can't be used in an 'is' expression. 

我在某处读到一个名为的库Dart:mirrors可以解决这个问题,但我还没有看到一个实际的例子。

标签: flutterdart

解决方案


我找到了答案。创建我要断言的类型的实例,然后使用runtimeType属性的技巧。

如果从 a.dart 调用一个类并且User从 b.dart 调用另一个类User,则 runtimeType 将不一样

final string = 'anything'.runtimeType;
assert('foo'.runtimeType is string);

推荐阅读