【问题标题】:undefined_named_parameter in super constructor of abstract class抽象类的超级构造函数中的 undefined_named_pa​​rameter
【发布时间】:2022-01-20 03:55:14
【问题描述】:

我对 Dart 和 Flutter 非常陌生,我一直在尝试创建两个类(SuccessState 和 ErrorState),它们实现一个带有可选命名参数的抽象类(DataState)。出于某种原因,每当我在 SuccessState 和 ErrorState 中调用超级构造函数时,都会在 SuccessState 构造函数中的“data”参数以及 ErrorState 构造函数中的“status”和“msg”参数上收到 undefined_named_pa​​rameter 错误。非常感谢任何输入,谢谢。

abstract class DataState<T> {
  final T? data;
  final int? status;
  final String? msg;

  const DataState({this.data, this.status, this.msg});
}

class SuccessState<T> implements DataState<T> {
  const SuccessState(T data) : super(data: data);

  @override
  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

class ErrorState<T> implements DataState<T> {
  const ErrorState(int status, String msg) : super(status: status, msg: msg);

  @override
  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

【问题讨论】:

  • 感谢大家的有益回复。对不起菜鸟问题。看来我需要熟悉扩展和实现哈哈。

标签: flutter dart generics inheritance abstract-class


【解决方案1】:

您想将 SuccessState 和 ErrorState 扩展到 DataState。

abstract class DataState<T> {
  final T? data;
  final int? status;
  final String? msg;

  const DataState({this.data, this.status, this.msg});
}

class SuccessState<T> extends DataState<T> {
  SuccessState(T data) : super(data: data);

  @override
  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

class ErrorState<T> implements DataState<T> {
  const ErrorState(int status, String msg) : super();

  @override
  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

【讨论】:

    【解决方案2】:

    问题是您使用的是implements 而不是extends。使用implements时不继承超级构造函数。

    【讨论】:

      【解决方案3】:

      你做错的事情是你正在实施,因为你必须扩展 DataState 类然后问题就会解决

      '类ErrorState实现DataState'

      更改为 ErrorState 类扩展 DataState

      【讨论】:

        猜你喜欢
        • 2019-06-02
        • 1970-01-01
        • 2018-09-16
        • 2020-11-27
        • 2011-08-01
        • 2015-03-20
        • 2012-01-14
        • 2011-03-21
        • 1970-01-01
        相关资源
        最近更新 更多