我是 Flutter 和 Dart 的初学者,需要帮助。
我有两节课:
类 ManPage 扩展 StateFullWidget
类 WomanPage 扩展 StateFullWidget
它们有两个关联的类 _ManPageState 和 _WomanPageState。
类 _ManPageState 扩展 State
类 _WomanPageState 扩展 State
这两个类中有很多重复的代码,例如从服务器获取信息并呈现它。 ManPage 和 WomanPage 中的代码也重复。
然后我尝试让ManPage和WomanPage继承自PersonPage。
我首先创建一个 _PersonState 希望它可以包含 _ManPageState 和 _WomanPageState 的所有通用代码,但我不知道如何将它使用到 _ManPageState 和 _WomanPageState 中。
这样做的好模式是什么?
组合可以比继承更好地解决我的问题吗?
任何建议都会非常有帮助。
非常感谢
多米尼克
您可以使用泛型来实现这一点。您可以拥有一个扩展
StatefulWidget
的自定义小部件,并将其相应的状态类扩展 State
限制为之前定义的小部件。例如:
abstract class PersonStatefulWidget extends StatefulWidget {
const PersonStatefulWidget({Key? key, required this.name}) : super(key: key);
final String name;
}
abstract class _PersonWidgetState<T extends PersonStatefulWidget> extends State<T> {
Widget buildSomeWidget(BuildContext context) {
return const Placeholder();
}
void doSomethingOnTap() {
// Do something
}
}
class ManPage extends PersonStatefulWidget {
const ManPage({super.key, required super.name});
@override
State<ManPage> createState() => _ManPageState();
}
class _ManPageState extends _PersonWidgetState<ManPage> {
@override
Widget build(BuildContext context) {
return const Placeholder();
}
}
如果你只想分享通用的方法或行为,你也可以使用mixin。