我有一个类,它接受函数作为构造函数参数。我想要定义一个辅助构造函数,用户可以在其中提供一个静态值。我做了这样的事:
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字段并在构造函数体中初始化它:
class UpdateCheckOk {
late final Function0<Future<String>> versionProvider;
UpdateCheckOk(this.versionProvider);
UpdateCheckOk.withStaticVersion(String version) {
versionProvider = () => Future.value(version);
}
}但我想知道,为什么第一个实现是无效的?
发布于 2022-07-28 15:04:00
如果添加一些括号,它似乎会起作用:
import 'package:dartz/dartz.dart';
class UpdateCheckOk {
final Function0<Future<String>> versionProvider;
UpdateCheckOk(this.versionProvider);
UpdateCheckOk.withStaticVersion(String version)
: versionProvider = (() => Future.value(version));
}https://stackoverflow.com/questions/73154050
复制相似问题