首页 > 解决方案 > 当我在颤振中使用带有本地小部件的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,
      height: 100,
      color: Colors.red,
    );
    return container;
  }
}

我更喜欢代码 A,但我在以下代码中看到了一些颤动的源代码AppBar

final Widget toolbar = NavigationToolbar(
  leading: leading,
  middle: title,
  trailing: actions,
  centerMiddle: widget._getEffectiveCenterTitle(theme),
  middleSpacing: widget.titleSpacing,
);

就像代码B一样,为什么flutter官方要添加class类型呢?为了表现?为了更具可读性?还是其他原因?

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

标签: flutterdartfinal

解决方案


Dart 是类型安全的,您可以决定是否添加类型。类型注释是可选的,因为 Dart VM 执行运行时检查并确保变量的值始终与变量的静态类型匹配。有关Dart 类型系统的更多信息,请参阅此内容。


推荐阅读