Flutter 自定义 Widgets:函数 vs 继承

Flutter custom Widgets: function vs inheritance

我的代码有效。这更多是关于conventions/good实践的问题,所以如果你不想浪费你的时间,请不要阅读。

我知道当你想在 Flutter 中制作自己的自定义小部件时,通常应该扩展 StatelessWidget/StatefulWidget。
但是使用函数代替有什么缺点吗,returns 一个 StatelessWidget?
我将给出一个我创建的自定义小部件的示例(以两种方式):

函数:

Widget flagImage(String imagePath) {
  return ClipRRect(
    borderRadius: BorderRadius.circular(7),
    child: Image.asset(
      imagePath,
      width: 60,
      height: 40,
      fit: BoxFit.fill,
    ),
  );
}

继承:

class FlagImage extends StatelessWidget {
  String imagePath;
  FlagImage(this.imagePath);

  @override
  Widget build(BuildContext context) {
    return ClipRRect(
      borderRadius: BorderRadius.circular(7),
      child: Image.asset(
        imagePath,
        width: 60,
        height: 40,
        fit: BoxFit.fill,
      ),
    );
  }
}

我可以将它们作为 child 分别插入到另一个小部件中,例如 flagImage(imagePath)FlagImage(imagePath)

有什么理由我不应该使用 returns 一个小而简单的 StatelessWidget 的函数?
对于非常小的Widget,我更喜欢使用function,那是LOC少一些,个人喜好。

创建单独的 build() 上下文允许框架优化构建。将其作为当前 build() 中的方法进行分解消除了这种可能性。