在DART中,假设我有以下类 class MyClass { const MyClass(); }

如果我有另一个类的属性接受Widget Function() someProperty, 我习惯于说someProperty: () => const MyClass(),但我想知道,如果我说 someProperty: MyClass.new是使用其常量构造函数调用MyClass,还是始终使用其默认(非常量)构造函数调用它?

推荐答案

分割将始终构造一个非const的对象.在创建拆分时,无法知道稍后是否会使用const个参数或非const个参数来调用它.也没有办法指定应该将剥离限制为只能使用const个参数调用.由于teft-off是一个Function对象,并且是可变的,因此无法知道它是否是对const构造函数的tear-off,并且可以在const上下文中调用,因此在调用teft-off时也不能指定const.

您可以利用const个对象(通常)被规范化来自己测试这一点:

class MyClass {
  const MyClass();
}

void main() {
  var f1 = () => const MyClass();
  var f2 = MyClass.new;

  print(identical(f1(), f1())); // Prints: true
  print(identical(f2(), f2())); // Prints: false
}

Flutter相关问答推荐

如何在flutter中获得类似属性的float(CSS属性)

Flutter -修改子小部件中的AppBar

如何等待抖动S定时器.定期取消?

如何在应用程序中使用Fflight显示表情包

如何创建这样的按钮

SingleChildScrollView在ErrorWidget.builder中不工作

如何对齐 AppBar Actions 中的文本?

如何使用providerContainer监听/写入FutureProvider?

Select 文本时如何更改 Flutter 中的光标 colored颜色 ?

我对 Flutter Apk 有疑问

忽略异步函数上的 context.mounted 访问 linting 错误是否安全?

Flutter - 我需要显示文本,但应用程序不需要

Flutterfire Configure - 未处理的异常和没有 firebase 初始化

具有 BLOC 和存储库模式的 Flutter Workmanager

flutter 中 // 和 /// 有什么区别

如何在 Flutter 中使用 drawLine() 和 drawCircle() 绘制等距离的 4 条线

Flutter使Perspective Page View无限循环

type '({bool growable}) => List' 不是类型转换中类型 'List' 的子类型

使用 onPressed 切换到另一个屏幕无法正常工作

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?