我在堆栈溢出上看到了这篇文章
哪里
class Option2 extends StatelessWidget {
const Option2();
Widget createDummyWidget() {
return const Dummy();
}
@override
Widget build(BuildContext context) {
return SizedBox(
child: createDummyWidget(),
);
}
}
对性能有影响,因为它可能导致不必要的重建。但我想知道我是否有
class Option2 extends StatelessWidget {
const Option2();
@override
Widget build(BuildContext context) {
final myNonConstantWidget = Dummy();
return SizedBox(
child: myNonConstantWidget,
);
}
}
这会对性能产生同样的负面影响(进行那些不需要的重建)吗?或者它只是一个表演者
class Option2 extends StatelessWidget {
const Option2();
@override
Widget build(BuildContext context) {
return SizedBox(
child: Dummy(),
);
}
}
因为我在 Flutter 自己的小部件中经常看到这种情况发生,所以我认为它不会对性能产生负面影响。
所有 3 个样本的性能实际上相同。
您在问题中提到的性能问题是关于
StatefulWidget
的,当 _counter
变量被修改时,整个小部件将被重建。
提取方法本身对性能没有负面影响,但它会使代码更难阅读,并且在
StatefulWidget
的上下文中,它可能会导致您无法跟踪真正需要重建的内容。
在这种情况下,flutter (dart) 建议采取最有利于代码可读性的做法,而不用担心编译器将如何处理您的代码。