【发布时间】:2020-03-03 15:16:12
【问题描述】:
我的问题很简单,我有一个像这样的 Dart 类
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 来简化对象比较,我还在类构造函数上使用了 const 关键字(不确定我在类构造函数上使用时是否听说过,如果它有在实例化之前具有相同属性的相同类)。
当我在 DevTools 上查找时,我总是在调用一个函数时得到多个类实例,尽管它总是相同的参数,并且垃圾收集器会保持它的事件,尽管我弹出/销毁视图(Flutter 上下文中的脚手架)。
现在我只是用一个小类测试它,但如果它是一个大类,这将是一团糟,即使我认为在这种情况下垃圾收集器肯定会处理未使用的类,但我想知道我是否可以通过某种 Dart/Flutter 方式解决这个“问题”。
【问题讨论】:
-
当我在某处使用带有文件名的导入并在其他地方使用包导入时,我有明显的重复类。甚至两份静态数据。
-
你确定在构造时使用了 const 吗?喜欢:
var weather = const Weather(...) -
是的,就是这样,为了做到这一点,参数也需要是 const,但在收集数据时在运行时动态传递。
标签: class memory flutter dart garbage-collection