Dart 将类的方法的子组封装在类型化命名对象中

Dart 将类的方法的子组封装在类型化命名对象中,dart,Dart,我想在一个类中封装一个子组方法,给封装起一个“helperFunctions”的名称,并将其类型化。例如,我想像这样调用helper函数: myClassInstance.helperFunctions.someHelperFunction(AnyParamsYouLike params); 我想要的效果是让这个类在其助手函数周围添加一个命名类型的包装器,作为一种文档形式,以便删除注释: SomeClass extends VpCubit<LoggedOutNickNameState,

我想在一个类中封装一个子组方法,给封装起一个“helperFunctions”的名称,并将其类型化。例如,我想像这样调用helper函数:

myClassInstance.helperFunctions.someHelperFunction(AnyParamsYouLike params);
我想要的效果是让这个类在其助手函数周围添加一个命名类型的包装器,作为一种文档形式,以便删除注释:

SomeClass extends VpCubit<LoggedOutNickNameState, MyHelperFunctionsType> {

  // helper functions
  void onSubmitPressed(BuildContext context) {
    saveNickNameLocallyUseCase
        .invoke(form.control(nickNameKey).value as String ?? '');

    Navigator.pushNamed(context, Routes.LOGGED_OUT_EMAIL,
            arguments: LoggedOutEmailPageArgs(
                form.control(nickNameKey).value as String ?? ''))
        .then((value) => initialise());
  }

}
SomeClass扩展了VpCubit{
//辅助函数
SubmitPressed上的void(BuildContext上下文){
本地用例
.invoke(form.control(昵称键).value作为字符串??“”);
Navigator.pushNamed(上下文、Routes.LOGGED\u OUT\u电子邮件、,
参数:LoggedOutEmailPageArgs(
控件(昵称键)。值为字符串??“”)
。然后((值)=>初始化());
}
}
基类将在子类上强制执行属性“helperFunctions”exists(并且可以为null),并让子类定义helperFunctions对象的类型(它将指定函数名)。它看起来是这样的,但是,不是这样,因为它不起作用,这就是我的问题,如何正确地实现它:

class VpCubit<T, SpecificTypeWithAnyFunctions> extends Cubit<T> {
  VpCubit(T initial) : super(initial) {
    if (onCreate != null) {
      onCreate();
    }
  }

  void onClose() => print('');
  void onCreate() => print('');

  @override
  Future<void> close() async {
    if (onClose != null) {
      onClose();
    }

    return super.close();
  }

  HelperFunctions<SpecificTypeWithAnyFunctions> helperFunctions;
}

class HelperFunctions<SpecificTypeWithAnyFunctions> {}
VpCubit类扩展了Cubit{
VpCubit(T首字母):超级(首字母){
如果(onCreate!=null){
onCreate();
}
}
void onClose()=>打印(“”);
void onCreate()=>打印(“”);
@凌驾
Future close()异步{
if(onClose!=null){
onClose();
}
返回super.close();
}
HelperFunctions HelperFunctions;
}
类HelperFunctions{}

到目前为止,我所能做的最好的事情就是为每个VpCubit扩展创建一个新类,该类接受其函数所需的参数:

class LoggedOutNickNameHelperFunctions extends HelperFunctions {
  LoggedOutNickNameHelperFunctions(
      this.saveNickNameLocallyUseCase, this.form, this.nickNameKey, this.state);

  void onSubmitPressed(BuildContext context) {
    saveNickNameLocallyUseCase
        .invoke(form.control(nickNameKey).value as String ?? '');

    Navigator.pushNamed(context, Routes.LOGGED_OUT_EMAIL,
            arguments: LoggedOutEmailPageArgs(
                form.control(nickNameKey).value as String ?? ''))
        .then<dynamic>((value) => state);
  }

  final SaveNickNameLocallyUseCase saveNickNameLocallyUseCase;
  final FormGroup form;
  final String nickNameKey;
  final LoggedOutNickNameState state;
}
在构造函数中设置_helperFunctions实例:

_helperFunctions = LoggedOutNickNameHelperFunctions(
          saveNickNameLocallyUseCase, form, nickNameKey, state);
遗憾的是,这并非全部嵌套在类本身中,但Dart中不允许嵌套类。非常想知道是否有更简洁的方法。

如何:

抽象类VpCubit扩展了Cubit{
// ...
H?获取帮助函数;
}
抽象类帮助函数{
//所有辅助函数对象共享的任何内容。
}
类SomeClass扩展了VpCubit{
int get whatnot=>42;
late final SomeHelpers?helperFunctions=SomeHelpers.\u0(此);
}
类SomeHelpers扩展HelperFunctions{
最后一堂课;
一些帮手(这个自己);
int someHelperFunction()=>\u self.whatnot+5;
}
这将在子类型指定的类型的
VpCubit
的每个实例上放置一个
helperFunctions
getter(根据请求可为null)

_helperFunctions = LoggedOutNickNameHelperFunctions(
          saveNickNameLocallyUseCase, form, nickNameKey, state);