flutter - 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();
可以在飞镖中做到这一点吗?
解决方案
我应该可以打电话如下
MyParent().method1(); MyParent().method2();
有两个问题:
MyParent
不是一个有效的类。因为它不是abstract
,它必须是可构造的,因此它的所有继承方法都必须从某个地方实现。MyParent().method2()
没有意义。MyParent
只执行method1
。你期望MyParent().method2()
做什么?它的实施应该从哪里来?
如果您只想MyParent
部分实现MyInterface
,您可以:
- 作
MyParent
也abstract
。 - 任何一个:
- 要求调用者构造
MyChild
而不是MyParent
. - 给出构造并返回实例
MyParent
的factory
构造函数(或static
方法) 。MyChild
- 要求调用者构造
推荐阅读
- react-native - 如何将边框半径应用于 Expo LinearGradient 组件的某些角
- html - .active 类在 Bootstrap 3 进度条和加载动画中不起作用
- android - 以下布局的表格格式未在 android 中显示
- javascript - 无法从 index.js 注入 html
- java - 尝试使用 POST RestTemplate 调用外部 API 时出现 BadRequest 400
- javascript - 目标计算器复合值不正确
- django - django-elasticsearch-dsl 建议不工作
- rust - 如何更正 sdl2::render::Canvas 上的错误“类型参数数量错误:预期 1,找到 0”
- java - EMV 外部验证命令返回 6982
- python - 如何计算该模型的准确度