当我在 flutter 中将 final 与本地小部件一起使用时,我应该添加类类型吗?

问题描述

代码 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