如何强制 Dart/Flutter 重复使用具有相同属性的相同 class

How to force Dart/Flutter to reuse same class with same properties

我的问题很简单,我有一个像这样的 Dart class

import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';

class Weather extends Equatable {
  final String cityName;
  final double tempCelsius;
  final double tempFahrneit;

  const Weather({
    @required this.cityName,
    @required this.tempCelsius,
    this.tempFahrneit,
  });

  @override
  List<Object> get props => [
        cityName,
        tempCelsius,
        tempFahrneit,
      ];
  @override
  String toString() {
    return [
      cityName,
      tempCelsius,
      tempFahrneit,
    ].toString();
  }
}

我正在使用 Equatable 来简化对象比较,我还在 class 构造函数上使用了 const 关键字(不确定这一点我听说过在 class constructor 如果 Dart 在实例化它之前具有相同的 class 和相同的属性,它会让 Dart 首先查找。

当我查看 DevTools 时,我总是在调用一个函数时得到多个 class 实例,尽管它总是相同的参数,垃圾收集器保持它事件,尽管我弹出/销毁视图(脚手架在 Flutter 上下文中)。

现在我只是用一个小的 class 来测试它,但是如果它是一个大的 class,这将是一团糟,尽管我认为在这种情况下是垃圾收集器肯定会处理未使用的 classes,但我想知道我是否可以通过某种 Dart/Flutter 方式解决此 "problem"。

如果您使用 const Weather(...) 创建对象,您应该不会再看到多个实例。

监视垃圾收集器通常不是一个好主意,您可以相信它会在 GC 算法到达时销毁您的对象。

Dart 的垃圾收集器针对创建许多小对象并将它们一起丢弃进行了优化。所以你可能根本不必担心这个。