作为Dart的新手,我不知道如何扩展我的statefull小部件的类.这是我班上的一个样子
class HomeState extends State<Home>
{
}
Run Code Online (Sandbox Code Playgroud)
我想做的是让HomeState类从我的自定义类继承一些方法.这将是这样的
class CustomClass
{
void DisplayBusyDialog()
{
......
}
}
Run Code Online (Sandbox Code Playgroud)
我知道像Dart这样的Java你不能从多个类继承(不像C++).我的问题是我需要做什么才能HomeState
继承CustomClass
?我的自定义类是否需要继承StatefulWidget然后进行HomeState
类扩展CustomClass
?那么模板状态如何在我的自定义类中处理它?任何建议,将不胜感激 ..
根据 Dart 编程语言,mixins
有扩展多个父类的解决方案。无论如何,如果您想遵循传统的面向对象概念,您可以创建一个具有泛型类型的抽象类。
abstract class _BaseStatefulState<T extends StatefulWidget> extends State<T> {
_BaseStatefulState() {
// Parent constructor
}
void baseMethod() {
// Parent method
}
}
Run Code Online (Sandbox Code Playgroud)
您StatefulWidget
应该从基础扩展,如下所示:
class _MainScreenState extends _BaseStatefulState<MainScreen> {}
Run Code Online (Sandbox Code Playgroud)
示例 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
}
}
Run Code Online (Sandbox Code Playgroud)
来源参考:https :
//gist.github.com/aslamanver/e1360071f9caff009101eb190a38d4cb
Flutter mixin 文档:https :
//dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins
你想要的是mixin,它允许多个"扩展".
class Bar {
bar() {}
}
mixin Mixin {
foo() {}
}
class Foo extends Bar with Mixin {
hello() {
foo();
bar();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你需要mixin来自基类的访问字段:
mixin Mixin on Bar {
foo() {
bar();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3441 次 |
最近记录: |