Dart 编译器能够推断 const 构造函数的用法吗?

2024-01-01

我认为 dart 会使用const构造函数(如果它能够自动完成),为了解释这个假设,让我们假设我们有一个小部件,它已经有一个const constructor like:

class Retry extends StatelessWidget {
  const Retry();
}

然后因为 dart“能够推断 const 用法”,接下来的两个代码将意味着并被编译成相同的代码:

1.

Container(
   child: Retry()
)
Container(
   child: const Retry()
)

这个假设是 dart 可以推断出他必须使用const声明了该选项的类的构造函数?或者不是? 我如何证实它?


不,Dart 编译器不会推断const除非句法上下文需要常量,例如如果你写const [A()]这使得A()进入 const 上下文,这意味着const [A()]是相同的const [const A()],很少有其他地方同样适用(例如元数据@A()).

一般来说 Dart 编译器无法推断const在语言规范要求这样做的地方之外,因为它可能会改变程序的语义。考虑:

class A {
  const A();
}

final Set<A> s = <A>{};
void foo(A a) {
  s.add(a);
}

void main() {
  foo(A());
  foo(A());
  print(s.length);
}

如果编译器只是到处放const在构造函数调用时,该程序将打印1,但是它应该打印2.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 编译器能够推断 const 构造函数的用法吗? 的相关文章

  • 如何检测颤振中的滑动

    我尝试使用 flutter 的滑动检测器插件来实现向右滑动导航到新屏幕 但它不起作用 不会引发任何错误 并且在调试它时永远不会命中断点 我研究了 GestureDector 但我不确定它是否适用于向右滑动的场景 我们希望它在屏幕上的任何位置
  • '非静态引用成员,不能使用默认赋值运算符'

    当我尝试编译代码时出现此错误 non static reference member Timestep Timestep previousTimestep can t use default assignment operator 我创建一
  • 如何检测flutter网站是否在浏览器后台运行?

    WidgetsBindingObserver 不适用于我的 flutter web 项目 是否有类似的东西可以检测用户何时关闭浏览器 例如使用 widgetbinding 关闭本机设备应用程序 我想在每次重建浏览器后重建整个网站 无论网站之
  • Flutter:从 Hive 盒创建对象流

    我正在尝试访问一些在整个应用程序中更改和访问的用户设置 为此 我使用 Hive 从框中检索用户设置 我想通过转动UserSettings对象检索自Hive box settings get userID 到一个流中 该流将被馈送到Strea
  • 如何将资产图像转换为文件?

    有没有办法将资产图像用作文件 我需要一个文件 以便可以使用它通过 http 在互联网上进行测试 我尝试过 Stackoverflow com 的一些答案 如何使用 image file 加载图像 https stackoverflow co
  • Flutter in_app_purchase 未在 Android 上加载

    我确实使用 https pub dev packages in app purchase https pub dev packages in app purchase 以下代码在IOS真机上完美运行 但在Android上无法连接到Googl
  • 在 flutter 应用程序中添加启动屏幕的正确方法是什么?

    我正在开发一个基于 flutter 的应用程序 并研究了几种添加闪屏的方法 但我不确定哪一个是最好实现的 import dart async import package flutter material dart import packa
  • 将颤动网格视图中的最后一行项目居中

    我有一个要输出到的动态项目列表GridView countmainAxisCount 为 2 2 列网格 的构造函数 如果列表长度为奇数 则最后一行将仅包含单个项目 我希望这个单个项目位于屏幕中央 而不是与第一列对齐 这可以做到吗 考虑到有
  • 我在浏览时无法预览 vscode 上的图标?

    如图所示 我正在浏览图标 但没有显示任何图标 新的更新是否有变化 或者我在这里遗漏了一些东西 gt 它曾经在我浏览时显示图标 当您将鼠标悬停在工具提示的右侧时 应该会出现一个箭头 指出 阅读更多 只需单击一次 因此图标预览应该始终出现
  • 如何在flutter app android中添加Startapp广告?

    我想用其他广告更改 AdMob 广告 一些个人问题 如何在flutter app android中添加Startapp广告 有什么方法可以将启动广告添加到我的 flutter 应用程序 android 中 StartApp 现已更名为 St
  • Flutter:防止抽屉关闭

    Flutter 中是否可以防止关闭抽屉 我在用endDrawer作为网络应用程序中的表单 我已禁用滑动打开功能 并且我还希望只允许通过按钮关闭它 这样用户就不会通过单击外部意外地关闭它 但是我看不到任何布尔值 例如防止解雇或任何实施方式Wi
  • 由于底部导航栏和标签栏导致底部溢出

    override Widget build BuildContext context super build context SystemChrome setEnabledSystemUIOverlays SystemUiOverlay v
  • C++ 在运行时分配 const 值?

    我有一个在运行时永远不会改变的恒定值 但在运行时之前不可能知道 有没有一种方法可以在不定义常量的情况下声明常量 无论是否作为类的成员 并在确定后 且仅一次 分配一个计算值 或者我是否必须诉诸非常量声明并使用编码 S Ps ALL CAPS变
  • 如何检查 Flutter 应用程序是否正在调试中运行?

    我正在寻找一种在应用程序处于调试模式时在 Flutter 中执行代码的方法 在 Flutter 中这可能吗 我似乎无法在文档中的任何地方找到它 像这样的东西 If app inDebugMode print Print only in de
  • Flutter 本地通知图标未显示

    我面临着一个非常常见的问题 但我看到的解决方案没有帮助我 所以 我正在尝试显示本地通知 除了图标之外一切正常 按照包的文档 我向可绘制对象添加了一个图标 但它不起作用 这是我的文件夹的结构和我想显示的图像 这是我的初始化代码 我尝试了很多事
  • 扩展Android应用程序类

    当我正在寻找从远程设备获取错误报告的解决方案时 就像 iOS 中的试飞应用程序一样 我发现了acra适用于 Android 设备here http code google com p acra wiki BasicSetup 在基本设置中
  • Dart 中的 DoubleLinkedQueue 和 ListQueue 有什么区别?

    Dart 核心 API 有两个类实现Queue
  • Flutter:处理错误 Dio Package(404,400 等)

    我正在学习通过包的 ID 搜索数据DIO https pub dev packages dio https pub dev packages dio 我的问题是每次我输入错误的关键字搜索时 应用程序都会突然崩溃并显示调试消息404 未找到
  • 如何阻止 flutter web 在每次构建时覆盖我的index.html?

    所以我正在使用 flutter web cloud firestore 为了让cloud firestore正常工作 我必须修改我的index html 问题是每次我跑步 flutter build web 它会覆盖我的index html
  • 连接 Flask Socket.IO Server 和 Flutter

    基本上 我有一个套接字 io 烧瓶代码 import cv2 import numpy as np from flask import Flask render template from flask socketio import Soc

随机推荐

  • 根据 TypeScript 验证 JSON

    我们使用 JSON 文件来配置一些 Web 应用程序 显然在字段名称等方面出现了错误 是否可以使用 TypeScript 定义验证 JSON 文件 或者我们应该将配置迁移到其他格式 我们同时使用Intellij和VSCode进行开发 定义示
  • 将 pdf 转换为单页可编辑 html

    我一直在努力将 pdf 文件转换为单个漂亮的 html 页面网上冲浪了一下 我得到的解决方案有点缺乏我的要求 因为我必须为大约 200 个 pdf 文件创建单独的 html 页面 因为在线转换器可能不是一个领先的解决方案 所以我尝试了以下解
  • QOpenGLWidget 与 QApplication?

    我们有一个基于 QWidget 的应用程序 之前使用 QWindow 进行 OpenGL 渲染 为了使该窗口适合我们的应用程序 我们必须使用 QWidget QWidget createWindowContainer QWindow 以前我
  • 为 ObjectBoundingBox 导出 SVG

    我对 SVG 的经验很少 我正在尝试保存来自 illustrator 的路径 以便它可以用作响应式剪贴蒙版 其大小相对于其父级 使用clipPathUnits objectBoundingBox 但是 Illustrator 似乎不允许我在
  • 新 luarock 的正确 Rockspec 文件名是什么?

    根据这个页面 http luarocks org en Creating a rock http luarocks org en Creating a rock 这应该保存在名为 luafruits 1 0 1 rockspec 的文件中
  • Nuget 包...项目中不存在...包...文件夹中已存在

    我已经与这个错误斗争了几个小时 但无法找到有效的解决方案 我在多项目解决方案中有一个 ASP Net API 其引用 依赖项配置不正确 我已经尝试修复它两天了 问题是 我相信 该 API 缺少 System Web Http System
  • C++ 挂钩 winsock

    我正在尝试挂接winsock send 和recv 以读取进程的所有流量 我将以下代码作为 dll 注入目标进程中 include dll h include
  • UIDatePicker,根据今天的日期设置最大和最小日期

    如果我有一个 UIDatePicker 并且我希望将最小和最大日期范围设置为三十年前和未来三十年之间 我将如何设置 未经测试 但您可能想要这样的东西 NSCalendar calendar NSCalendar alloc initWith
  • 如何在CTR模式下寻找并解密部分码流?

    我对 cryptopp 中的部分解码有疑问 使用 AES 256 CTR 编码源 CTR Mode lt AES gt Encryption e e SetKeyWithIV key 32 iv string encrypt string
  • 在 Django 中提供大文件(高负载)

    我一直在使用一种提供下载服务的方法 但由于它不安全 我决定更改它 该方法是指向存储中的原始文件的链接 但风险在于知道该链接的每个人都可以下载该文件 所以我现在通过我的视图提供该文件 这样只有具有权限的用户才能下载该文件 但我注意到服务器上的
  • Angular 文件夹结构和组件服务

    我读过很多关于 Angular 文件夹结构的文章 我仍然不清楚我们将组件服务放在哪里 组件之间的共享服务被置于共享之下 但是如果服务仅由组件使用呢 通常我将所有组件逻辑放入一个服务中 并让组件保留仅与 UI 内容相关的代码 使用哪一种更好
  • zend 扩展到底是什么?

    如果你看本文档 http php net manual fr function get loaded extensions php 第一个参数仅返回 Zend 扩展 与 PHP 简单 扩展相比 Zend 扩展到底是什么 Zend 扩展连接到
  • Visual Studio 附加库?

    我希望找到一些 Visual Studio 的附加组件来解决一些特定的可用性问题 是否有一个 Visual Studio 插件库 其中包含每个人 公司 雅虎和乡巴佬创建的巨大插件垃圾场 就像Vista 侧边栏小工具库 http vista
  • NodeJS - 从可读流中查看数据事件,而无需从可写流中相应暂停

    我们发现生产中的一些流的内存使用率极高 文件存储在 S3 中 我们在 S3 对象上打开一个可读流 然后将该数据通过管道传输到本地文件系统 在我们的 EC2 实例上 上的文件 我们的一些客户拥有非常大的文件 在一个实例中 他们有一个大小超过
  • Gradle 无法添加编译 'com.google.android.gms:play-services:7.0.0'

    我不敢相信没有人找到解决这个问题的方法 我想向我的应用程序添加一个横幅 但 Android Studio 的 Gradle 系统试图让我相信这不是一个好主意 它看起来像这样 apply plugin com android applicat
  • 使用对文件中定义的引用来填充 SVG 图案

    尽管 W3 规范 以下尝试制作带有图案填充的矩形似乎在 Safari 6 1 Firefox 30 或 Chrome 36 中不起作用似乎在说 http www w3 org TR SVG linking html IRIforms我可以使
  • 如何显示查询结果

    查询后我尝试显示数据 我只能接收来自 field 1 的数据 从 field 2 和 field 没有 如何修复它 if result die Query to show fields from table failed fields nu
  • 无法使用clangd读取linux内核代码

    我有一些关于Linux内核驱动程序的代码 我用熊使生成compile commands json 这是我的一些compile commands json directory usr src linux headers 5 4 0 90 ge
  • 为什么 BCrypt 生成的哈希是不确定的

    我过去使用过许多不同的哈希算法 我的印象是它们都是确定性的 我刚刚将一些代码切换为使用 BCrypt Net 我不得不承认 当我所有的比较测试都失败时 我完全被难住了 在我的测试中寻找错误一段令人尴尬的时间后 我意识到我关于哈希值是确定性的
  • Dart 编译器能够推断 const 构造函数的用法吗?

    我认为 dart 会使用const构造函数 如果它能够自动完成 为了解释这个假设 让我们假设我们有一个小部件 它已经有一个const constructor like class Retry extends StatelessWidget