2023-05-30 flutter 操作符as as? as!

2023-05-29  本文已影响0人  我是小胡胡123

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]

上一篇 下一篇

猜你喜欢

热点阅读