问题描述
代码 A:
class MyContainer extends StatelessWidget {
const MyContainer({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
// No class type
final container = Container(
width: 100,height: 100,color: Colors.red,);
return container;
}
}
代码 B:
class MyContainer extends StatelessWidget {
const MyContainer({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
// Add class type
final Widget container = Container(
width: 100,);
return container;
}
}
我更喜欢代码 A,但我在 AppBar
中看到了一些 Flutter 源代码:
final Widget toolbar = NavigationToolbar(
leading: leading,middle: title,trailing: actions,centerMiddle: widget._getEffectiveCenterTitle(theme),middleSpacing: widget.titleSpacing,);
就像Code B,为什么Flutter官方要添加类类型?为了性能?为了更具可读性?还是其他原因?
当我在本地小部件中使用 final 时,我应该添加类类型吗?
解决方法
Dart 是类型安全的,您可以决定是否添加类型。类型注释是可选的,因为 Dart VM 执行运行时检查并确保变量的值始终匹配变量的静态类型。有关 Dart 类型系统的更多信息,请参阅 this。