如何在 Dart 中将父类转换为其子类

You*_*lid 10 extends casting class dart flutter

我有两个 A 类和 B 类扩展 A。

class A{
  String a;
  A();
}
class B extends A{
  String b;
  B();
}
Run Code Online (Sandbox Code Playgroud)

如何获得点赞:

B getA(){
  return A();
}
Run Code Online (Sandbox Code Playgroud)

或者

  B b = A();
Run Code Online (Sandbox Code Playgroud)

我的代码:

  Future<B> getB() async {
    return apiMethod("url", headers: {'requirestoken': true}, httpEnum: HttpEnum.GET).then((response) {
      return B.fromJson(response.data);
    }).catchError((error, stacktrace) => A.catchErrorMethod(error, stacktrace));
  }
Run Code Online (Sandbox Code Playgroud)

而A类

class A {
  A.catchErrorMethod(error, stacktrace):....
}
Run Code Online (Sandbox Code Playgroud)

Wen*_*del 6

我对“铸造”也有同样的问题。Dart 的解决方案是使用“as”,如下所示:

B b = A() as B;
Run Code Online (Sandbox Code Playgroud)

Dart:文档:修复常见类型问题


Pie*_*oon 4

你不可以做这个。B 是 A,但 A 不是 B。

然而,你可以简单地在任何地方使用 B,就像它是 A 一样