在本文档中 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 重建的额外压力!