繁体   English   中英

如何强制 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();
  }
}

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM