相关疑难解决方法(0)

Dart:如何在运行时确定可为空的泛型类型?

我需要在运行时确定泛型类型是否是Stringboolintdouble另一个类。我没有找到针对可为空类型执行此操作的方法:

class Foo<T> {  
  void foo() {
    if (T == int) {
      print("'T' is an int");
    } else {
      print("'T' is not an int");
    }
  }
}

void main() {
  final foo = Foo<int>();
  final bar = Foo<int?>();
  foo.foo();
  bar.foo();
}
Run Code Online (Sandbox Code Playgroud)

控制台输出:

// 'T' is an int
// 'T' is not an int
Run Code Online (Sandbox Code Playgroud)

是否有任何我不知道的语法来检查可为空类型?我已经尝试过,int?但它无法编译。

generics types nullable runtime dart

5
推荐指数
1
解决办法
1361
查看次数

在 Dart 中,给定可空类型“T?”,如何获取不可空类型“T”

给定一些可为空的类型T?,如何获得相应的不可为空的类型T

例如:

T? x<T extends int?>(T? value) => value;
Type g<T>(T Function(T) t) => T;
Type type = g(x);
print(type); // Prints "int?"
Run Code Online (Sandbox Code Playgroud)

现在我想获得不可为空的类型。我如何创建该函数convert以便:

Type nonNullableType = convert(type);
print(nonNullableType); // Prints "int"
Run Code Online (Sandbox Code Playgroud)

types non-nullable dart

3
推荐指数
1
解决办法
7212
查看次数

标签 统计

dart ×2

types ×2

generics ×1

non-nullable ×1

nullable ×1

runtime ×1