[英]Dart Flutter: Syntax confusion in setting default value for class properties
[英]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();
}
}
I'm using Equatable to ease the objects comparison, i also used the const
keyword on the class constructor (not sure about this i've heard when used on a class constructor it makes Dart look first if it has the same class with same properties在实例化之前)。
当我查看 DevTools 时,我总是在调用 function 时获得多个 class 实例,尽管它始终是相同的参数,并且垃圾收集器会保持它的事件,尽管我弹出/破坏视图(ZC047B107EE763AFB6616 上下文中的脚手架)。
现在我只是用一个小的 class 测试它,但如果它是一个大的 class,这将是一团糟,即使我认为在这种情况下垃圾收集器肯定会处理未使用的类,但我想知道如果我能用某种 Dart/Flutter 方式解决这个“问题”。
如果您使用const Weather(...)
创建对象,您应该不会再看到多个实例。
观察垃圾收集器通常不是一个好主意,你可以相信当 GC 算法到达它时它会破坏你的对象。
Dart 的垃圾收集器针对创建许多小对象并将它们一起丢弃而进行了优化。 因此,您可能根本不必担心这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.