flutter - 这个类可以重新配置为接受 Flutter 中的命名参数吗?

标签 flutter dart

后台代码

我有一个名为 Result 的类,我用它来将一些错误代码和错误消息传递到错误屏幕。

class Result<T>{
  Result._();
  factory Result.loading(T msg) = LoadingState<T>;
  factory Result.success(T value) = SuccessState<T>;
  factory Result.error(T title, T msg, T errorcode) = ErrorState<T>;
}
class ErrorState<T> extends Result<T> {
  final T title;
  final T msg;
  final T errorcode;

  ErrorState(this.title, this.msg, this.errorcode) : super._();
  //final T msg;
}

该类的调用方式如下:

return Result.error("Error","Status code not 200", 1);

我的问题

从功能上来说,一切都很好。

问题是我认为自己将来必须引用我的类结果代码来记住每个字段代表什么,如果我想添加更多字段,这可能会变得更加成问题

我宁愿对其进行转换,以便命名字段

我的问题

能否转换此类,以便像这样调用它(使用描述参数的名称):

return Result.error(title:"Error", msg:"Status code not 200", errorcode:1);

最佳答案

如果你想改变Result.error要接受命名参数而不破坏现有的调用站点,您不能这样做。参数可以是位置参数或命名参数,但不能同时是两者。

如果您同意破坏现有的调用站点,那么您可以将它们设置为必需的命名参数。由于您使用重定向构造函数,您需要:

  • 更改重定向构造函数的签名(在您的情况下为 ErrorState )以与 Result.error 的签名完全匹配:

    factory Result.error(
        {required T title, required T msg, required T errorcode}) = ErrorState<T>;
    
    ...
    
    ErrorState({required this.title, required this.msg, required this.errorcode})
      : super._();
    
  • 或者更改Result.error成为非重定向构造函数:

    factory Result.error(
        {required T title, required T msg, required T errorcode}) {
      return ErrorState<T>(title, msg, errorcode);
    }
    

(如果您确实想避免破坏现有的调用方,您可以添加一个使用命名参数的单独的命名构造函数(或 static 方法),并且您可以选择弃用旧的构造函数。)

顺便说一句,Result 没有意义。和ErrorState是泛型类。您真的期待 titlemsg不是String是?对于 title 的类型真的有意义吗? , msg ,和errorcode是一样的吗? (根据您所展示的示例,您最终会得到 Result<Object> ,这违背了使用泛型类的意义。)

关于flutter - 这个类可以重新配置为接受 Flutter 中的命名参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68187227/

相关文章:

flutter - 当我渲染我的子 Material 应用程序时,如何阻止我的更改通知程序提供程序重建我的父 Material 应用程序?

flutter - 如何使容器的填充可点击?

dart - 实时 flutter

dart - 在 dart 的 MultipartRequest 中添加授权 header

flutter - 是否可以将使用虚幻引擎创建的游戏嵌入到 Flutter 移动应用程序中?

asynchronous - 如何仅在 Dart 中完成上一次执行后才定期调用函数?

dart - AngularDart英雄之旅教程抛出错误 'Hero'不是函数吗?

dart - 我可以在 flutter 中访问类型或参数的元数据注释吗?

flutter - 如何在 flutter 中解析网络套接字响应(JSON)

android-studio - Flutter 和 Android Studio 中的内存不足错误