颤振:使用"children: <Widget>"还是"children:"?



在本文档中 https://flutter.dev/docs/development/ui/layout#nesting-rows-and-columns 他们使用

孩子们:

但是在Android Studio中,这个文档 https://api.flutter.dev/flutter/widgets/Row-class.html 他们使用

儿童:

那么,有什么区别呢? 谢谢

它们都是正确的并且有效,但区别在于:

就像创建列表时,可以创建如下所示的列表

List<dynamic> list;
List<Widget> list;

当你传递<Widget>[]时,你告诉编译器输入列表类型是小部件,所有列表子项必须是小部件而不是其他任何东西

如果您使用children: <Widget>[]您的 IDE 可以知道列表类型,并且如果您添加除 Widget 以外的任何内容,IDE 会在您构建应用程序之前抛出错误并浪费您的时间

在 dart 中,当您要在列表中设置项目类型以执行此操作时:

例如:

var intList = <int>[1, 2, 3];

并且 var 列表的类型变为List<int>

所以children这里是一样的。

在小部件列表之前设置<widget>,告诉编译器,此列表包含widget类型的项。

第一个在运行时计算子项,这可能是对 UI 重建的额外影响百分比非常低的原因。因为,它分配动态并在运行时检查我的小部件的类型!

另一方面,第二个是编译类型,这意味着在运行时没有额外的工作。这消除了运行时 UI 重建的额外压力!

相关内容

最新更新