flutter - 带“:”的 Dart 类与不带的 Dart 类
问题描述
我对 Dart Constructors 感到很困惑。我想要做的是有两个参数,都是最终的,但一个是基于另一个的。
class Chart extends StatelessWidget {
final List<Transaction> _recentTransactions;
final double _totalAmount;
Chart(List<Transaction> _recentTransactions)
: this._recentTransactions = _recentTransactions,
this._totalAmount =
_recentTransactions.fold(0.0, (prev, next) => prev + next.price);
}
上面的代码有效。我有一个私人名单,我的私人替补_totalAmount
是最终的,但基于名单_recentTransaction
。
我想出了这段代码,阅读了最终构造函数的文档
但我真的不明白为什么这不起作用
class Chart extends StatelessWidget {
final List<Transaction> _recentTransactions;
final double _totalAmount;
Chart(List<Transaction> _recentTransactions) {
this._recentTransactions = _recentTransactions;
this._totalAmount =
_recentTransactions.fold(0.0, (prev, next) => prev + next.price);
}
}
:
不同之处在于,在第一次实现时我使用{}
我在这里想念什么?据我了解,:
用于指代不同的构造函数(在这种情况下我没有)。
我还可以使第二个示例不声明final _totalAmount 仍然有效,因为该值永远不会改变(而且,由于在 Flutter 中,我收到警告说我应该将其声明为 final,因为我的类扩展了 StatelessWidget这被声明为@immutable。
TL;DR:为什么我可以使用带有:
最终参数的构造函数,但它不适用于普通的构造函数?
解决方案
推荐阅读
- bash - 使用俄语或中文字符执行 sh 文件 - 保存为 UTF-8 或 Unicode
- cursor - 带有“order by”子句的 PostgreSQL CURSOR
- python - 如何获取 matplotlib 2d 轮廓的线条轮廓
- excel - 我的代码没有获取文件夹中的最新文件
- nginx - 在连接到上游客户端时负载平衡没有实时上游
- python - 断言字符串匹配 pytest 中的正则表达式
- python - 被 sorted(..., key=lambda...) 弄糊涂了
- c# - 是否有可用于 c# 控制台应用程序的默认 ILogger?
- gremlin - Gremlin-Python:返回一个完全填充的子图
- sql-server - SQL Server 聚集索引大于实际表。为什么以及如何解决它?