作为Dart的新手,我不知道如何扩展我的有状态小部件的类。这是我班上的一个样子
class HomeState extends State<Home>
{
}
我想做的是让HomeState类从我的自定义类继承一些方法。这将是这样的
class CustomClass
{
void DisplayBusyDialog()
{
......
}
}
我知道像Dart这样的Java你不能从多个类继承(不像C ++)。
我的问题是,HomeState
继承CustomClass
需要做些什么?我的自定义类是否需要从StatefulWidget继承,然后HomeState
类扩展CustomClass
?那么模板状态如何在我的自定义类中处理它?任何建议将不胜感激..
答案 0 :(得分:6)
你想要的是mixin,它允许多个&#34;扩展&#34;。
class Bar {
bar() {}
}
mixin Mixin {
foo() {}
}
class Foo extends Bar with Mixin {
hello() {
foo();
bar();
}
}
如果你需要mixin来自基类的访问字段:
mixin Mixin on Bar {
foo() {
bar();
}
}
答案 1 :(得分:0)
根据Dart编程语言,mixins
具有扩展多个父类的解决方案。无论如何,如果您想遵循传统的面向对象的概念,则可以创建具有泛型类型的抽象类。
abstract class _BaseStatefulState<T extends StatefulWidget> extends State<T> {
_BaseStatefulState() {
// Parent constructor
}
void baseMethod() {
// Parent method
}
}
您的StatefulWidget
应该从下面扩展,如下所示:
class _MainScreenState extends _BaseStatefulState<MainScreen> {}
StatefulWidget示例:
import 'package:flutter/material.dart';
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends _BaseStatefulState<MainScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text("Test")),
);
}
}
abstract class _BaseStatefulState<T extends StatefulWidget> extends State<T> {
_BaseStatefulState() {
// Parent constructor
}
void baseMethod() {
// Parent method
}
}
来源参考:
https://gist.github.com/aslamanver/e1360071f9caff009101eb190a38d4cb
Flutter mixin文档:
https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins