Dart 扩展颤振应用程序的基类

Dart 扩展颤振应用程序的基类,dart,flutter,Dart,Flutter,作为Dart的新手,我不知道如何扩展我的statefull小部件的类。这就是我班上的一个人的长相 class HomeState extends State<Home> { } 我知道在类似Dart的Java中,您不能从多个类继承(与C++不同)。 我的问题是,我需要做什么才能从CustomClass继承HomeState?我的自定义类是否需要从StatefulWidget继承,然后让HomeState类扩展CustomClass?模板状态如何在自定义类中处理?如果您有任何建议,

作为Dart的新手,我不知道如何扩展我的statefull小部件的类。这就是我班上的一个人的长相

class HomeState extends State<Home>
{
} 
我知道在类似Dart的Java中,您不能从多个类继承(与C++不同)。
我的问题是,我需要做什么才能从
CustomClass
继承
HomeState
?我的自定义类是否需要从StatefulWidget继承,然后让
HomeState
类扩展
CustomClass
?模板状态如何在自定义类中处理?如果您有任何建议,我们将不胜感激。

您需要的是mixin,它允许多个“扩展”

如果您需要在基类的访问字段中输入mix:

mixin Mixin on Bar {
  foo() {
    bar();
  }
}

根据Dart编程语言,
mixins
具有扩展多个父类的解决方案。无论如何,如果您想遵循传统的面向对象概念,您可以创建一个具有泛型类型的抽象类

abstract class _BaseStatefulState<T extends StatefulWidget> extends State<T> {

  _BaseStatefulState() {
    // Parent constructor
  }

  void baseMethod() {
    // Parent method
  }
}
示例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
  }
}
导入“包装:颤振/材料.省道”;
类MainScreen扩展StatefulWidget{
@凌驾
_MainScreenState createState()=>\u MainScreenState();
}
类_MainScreenState扩展了_BaseStatefulState{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中间(子项:文本(“测试”)),
);
}
}
抽象类BaseStatefulState扩展了状态{
_BaseStatefulState(){
//父构造函数
}
void baseMethod(){
//父方法
}
}
来源参考:

颤振混音文件:

我们可以有多个混音吗?当然可以!只需添加一个coma+第二个mixinsems的类型,比如Mixins不能接受构造函数他们需要一个默认构造函数,是的。但这仍然是做这类事情的省道方式。那么你如何处理儿童财产呢?我希望能够显示Snackbar,它使用setState(),但如果不扩展State对象,就无法显示它。我似乎无法将_BaseStatefulState抽象类放在另一个dart文件中。。。当我尝试使用它时,它不会导入它。我该怎么做@Googlian@ebg11您能否在另一个问题中明确指出您的问题,并将此答案作为参考?它对我很有用,感谢您的帮助,以防人们混淆“\u BaseStatefulState”是私有类,因此将其代码保存在单独的文件中,并使用它,通过删除下划线使其公开。请在@googlian处提及它,如果您正在为基类抽象类BaseStatefulState扩展状态{BaseStatefulState(){//父构造函数}使用指定文件,请将其公开void baseMethod(){//父方法}}
abstract class _BaseStatefulState<T extends StatefulWidget> extends State<T> {

  _BaseStatefulState() {
    // Parent constructor
  }

  void baseMethod() {
    // Parent method
  }
}
class _MainScreenState extends _BaseStatefulState<MainScreen> {}
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
  }
}