- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在学习 Udacity 的 flutter 类(class)。有这个构造函数调用。
child: Category(
name: _categoryName,
color: _categoryColor,
iconLocation: _categoryIcon,
),
当我自己做这个的时候,我很自然地把构造函数写成这样:
const Category({
@required this.name,
@required this.icon,
@required this.color
}) : assert(name != null),
assert(icon != null),
assert(color != null);
忽略断言和@requireds。你调用使用三个参数,所以构造函数必须有三个参数。
但是,在本练习的解决方案文件中,讲师是这样操作的。
const Category({
Key key,
@required this.name,
@required this.color,
@required this.iconLocation,
}) : assert(name != null),
assert(color != null),
assert(iconLocation != null),
super(key: key);
这个关键参数是什么?为什么要传递类别小部件类的父类(我假设是 StatelessWidget)?
我看过 Key class ,但我什么都不懂。此页面中没有上下文或我可以使用的示例。
最佳答案
让我们来看看key documentation你链接了..
A Key is an identifier for Widgets, Elements and SemanticsNodes.
很酷,小部件有一个标识符,那就是 Key
。很简单。
A new widget will only be used to update an existing element if its key is the same as the key of the current widget associated with the element.
现在这有点神秘,让我们分解一下。
这里发生的情况是当状态发生变化并且您的小部件树正在重建时,flutter 需要一种知道的方法:
该键标识一个小部件,这告诉 Flutter 一个小部件是否应该被扩充为新的,或者它是否应该在构建期间替换树中的现有小部件。
Keys must be unique amongst the Elements with the same parent.
现在这变得很明显,因为如果它的键不是唯一的,我们就无法知道哪个状态属于这个小部件。自己试试吧!创建一个包含两个小部件的列并为它们提供相同的键。剧透警告: flutter 会提示,你现在知道为什么了:)
为了完整起见,这里要说明的最后一点是关于本地和全局键。常规 Key
很可能是 LocalKey
,这个只需要在它的 sibling 中是独一无二的。如果您想为在改变父级的树周围移动的小部件保留状态,那么您正在寻找 GlobalKey
.
此外,flutter 使用对象的类型(如 Object.runtimeType
中的)以及在构建期间识别小部件的键。这就是为什么您通常根本不指定键并且事情仍然有效的原因,因为这些可能是 LocalKeys
并且您可能没有两个具有相同 runtimeType
的小部件在同一个父级下,因此即使它们碰巧具有相同的默认 key ,它们仍然不会发生冲突。
关于flutter - 构造函数中的 Key 参数是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50428455/
查看“mysqldump -d”并看到一个键是 KEY,而不是“PRIMARY KEY”或“FOREIGN KEY” 什么是关键? 示例: CREATE TABLE IF NOT EXISTS `TA
在我开始使用 Python 的过程中尝试找出最佳编码实践。我用 Pandas 写了一个 csv 到数据框阅读器。它使用格式: dataframe = read_csv(csv_input, useco
在 Flutter 中,用一个例子可以清楚地解释什么? 我的困惑是关于 key,如下面的代码所示。 MyHomepage({Key key, this.title}) : super(key: key
我在我的 Android 应用程序中使用 GCM。要使用 GCM 服务,我们需要创建 Google API key 。因此,我为 android、服务器和浏览器 key 创建了 API key 。似乎
我想在 azure key 保管库中创建一个 secret ,该 key 将具有多个 key (例如 JSON)。 例如- { "storageAccountKey":"XXXXX", "Co
尝试通过带有 encodeforURL() 的 url 发送 key 时,我不断收到错误消息和 decodefromUrl() .代码示例如下。 这是我的入口页面: key = generateSec
是否有检查雪花变体字段中是否存在键的函数? 最佳答案 您可以使用 IS_NULL_VALUE 来查看 key 是否存在。如果键不存在,则结果将为 NULL。如果键存在,如果值为 JSON null,则
我正在尝试运行此命令: sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A 但我收到一个错误: Execu
我有一个 csv 文件,我正在尝试对 row[3] 进行计数,然后将其与 row[0] 连接 row[0] row[3] 'A01' 'a' 'B02'
如何编写具有这种形式的函数: A(key, B(key, C(key, ValFactory(key)))) 其中 A、B 和 C 具有此签名: TResult GetOrAdd(string key
审查 this method我很好奇为什么它使用 Object.keys(this).map(key => (this as any)[key])? 只调用 Object.keys(this).ind
我有一个奇怪的情况。我有一个字典,self.containing_dict。使用调试器,我看到了字典的内容,并且可以看到 self 是其中的一个键。但是看看这个: >>> self in self.c
我需要在我的 Google Apps 脚本中使用 RSA-SHA256 和公钥签署消息。 我正在尝试使用 Utilities.computeRsaSha256Signature(value, key)
我是 React 的初学者开发人员,几天前我看到了一些我不理解的有趣语法。 View组件上有{...{key}},我会写成 key={key} ,它完全一样吗?你有链接或解释吗? render()
代理 key 、合成 key 和人工 key 之间有什么区别吗? 我不清楚确切的区别。 最佳答案 代理键、合成键和人工键是同义词。技术关键是另一个。它们都表示“没有商业意义的主键”。它们不同于具有超出
问题陈述:在 Web/控制台 C# 应用程序中以编程方式检索并使用存储在 Azure Key Vault 中的敏感值(例如数据库连接字符串)。 据我所知,您可以在 AAD 中注册应用,并使用其客户端
问题陈述:在 Web/控制台 C# 应用程序中以编程方式检索并使用存储在 Azure Key Vault 中的敏感值(例如数据库连接字符串)。 据我所知,您可以在 AAD 中注册应用,并使用其客户端
我正在寻找 Perl 警告的解决方案 “引用键是实验性的” 我从这样的代码中得到这个: foreach my $f (keys($normal{$nuc}{$e})) {#x, y, and z 我在
我正在为 HSM 实现 JCE 提供程序 JCE中有没有机制指定 key 生成类型例如: session key 或永久 key KeyGenerator keygen = KeyGener
我在 Facebook 上创建了一个应用程序。我已经正确添加了 keyhash 并且应用程序运行良好但是当我今天来并尝试再次运行它时它给了我这个错误。 这已经是第二次了。 Previsouly 当我收
我是一名优秀的程序员,十分优秀!