flutter 操作符as as? as!
as
在Flutter中,as操作符用于类型转换或类型断言。它允许你显式地告诉编译器将一个对象视为特定的类型,前提是对象的实际类型与指定的类型兼容。
以下是在Flutter中使用as操作符的示例:
var obj = someObject as SomeType;
在上面的示例中,someObject被强制转换或断言为SomeType类型。如果someObject不是SomeType类型或其子类型,将在运行时抛出TypeError。
另外,as?和as!操作符是在Dart 2.12中引入的。这些操作符用于空安全类型转换,并与Dart 2.12引入的空安全特性配合使用。
as?
var obj = someObject as? SomeType;
可以是null类型或者SomeType 类型或其子类型。
如果类型不一致,异常。
as!
var obj = someObject as! SomeType;
只能是SomeType 类型或其子类型
如果类型不一致,异常。
测试代码:
final List<dynamic> args = [
null,
'1',
1,
];
var a = args[0] as String?;
print(a);
try {
var b = args[0] as int?;
print(b);
} catch (e) {
print('异常了$e');
}
try {
var b2 = args[1] as int?;
print(b2);
} catch (e) {
print('异常了$e');
}
print(args);
运行结果:
null
null
null
异常了TypeError: "1": type 'String' is not a subtype of type 'int?'
[null, 1, 1]
网友评论