首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart:如何在初始化程序列表中初始化函数类型字段?

Dart:如何在初始化程序列表中初始化函数类型字段?
EN

Stack Overflow用户
提问于 2022-07-28 13:52:17
回答 1查看 36关注 0票数 0

我有一个类,它接受函数作为构造函数参数。我想要定义一个辅助构造函数,用户可以在其中提供一个静态值。我做了这样的事:

代码语言:javascript
复制
import 'package:dartz/dartz.dart';

class UpdateCheckNotWorking {
  final Function0<Future<String>> versionProvider;

  UpdateCheckNotWorking(this.versionProvider);

  UpdateCheckNotWorking.withStaticVersion(String version)
      : versionProvider = () => Future.value(version);
}

由于以下两个错误,此代码无法编译:

解决方法是使用late final字段并在构造函数体中初始化它:

代码语言:javascript
复制
class UpdateCheckOk {
  late final Function0<Future<String>> versionProvider;

  UpdateCheckOk(this.versionProvider);

  UpdateCheckOk.withStaticVersion(String version) {
    versionProvider = () => Future.value(version);
  }
}

但我想知道,为什么第一个实现是无效的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 15:04:00

如果添加一些括号,它似乎会起作用:

代码语言:javascript
复制
import 'package:dartz/dartz.dart';

class UpdateCheckOk {
  final Function0<Future<String>> versionProvider;

  UpdateCheckOk(this.versionProvider);

  UpdateCheckOk.withStaticVersion(String version)
      : versionProvider = (() => Future.value(version));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73154050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档