首页 > 解决方案 > Dart Flutter中实现抽象类的父类如何拆分?

问题描述

我想在 Flutter 中使用一些部分类,但不知何故它不适用于已实现的抽象类。我举个例子

my_interface.dart

abstract class MyInterface {
  void method1();
  void method2();
}

my_parent.dart

import 'package:XYZ/core/init/network/firebase/my_interface.dart';

part 'my_child.dart';
class MyParent implements MyInterface {

  MyParent();

  @override
  void method1() {}
}

my_child.dart

part of 'my_parent.dart';
class MyChild extends MyParent {

_MyChild() : super();

  @override
  void method2() {}
}

如您所见,我的抽象类有 2 个方法,我想在我的父类中编写 method1 的主体,在我的子类中编写 method2 的主体。

那么当我调用这些方法时,我应该可以如下调用

MyParent().method1();
MyParent().method2();

可以在飞镖中做到这一点吗?

标签: flutterdartpartial-classes

解决方案


我应该可以打电话如下

MyParent().method1();
MyParent().method2();

有两个问题:

  • MyParent不是一个有效的类。因为它不是abstract,它必须是可构造的,因此它的所有继承方法都必须从某个地方实现。
  • MyParent().method2()没有意义。 MyParent只执行method1。你期望MyParent().method2()做什么?它的实施应该从哪里来?

如果您只想MyParent部分实现MyInterface,您可以:

  1. MyParentabstract
  2. 任何一个:
    • 要求调用者构造MyChild而不是MyParent.
    • 给出构造并返回实例MyParentfactory构造函数(或static方法) 。MyChild

推荐阅读