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() 中的方法进行分解消除了这种可能性。
我的代码有效。这更多是关于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() 中的方法进行分解消除了这种可能性。