首页 > 解决方案 > 带“:”的 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:为什么我可以使用带有:最终参数的构造函数,但它不适用于普通的构造函数?

标签: flutterdart

解决方案


推荐阅读