很明显,在StatefulWidget
中,如果状态更改,则const Text('...')
将不会重建。
class _SomeWidgetState extends State<SomeWidget> {
@override
Widget build(BuildContext context) {
return const Text('Some Static Text'); // doesn't rebuild
}
}
但是,我的问题是:在const
中使用StatelessWidget
有什么好处吗?
class ListItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Text('Some Static Text') // Is `const` useful here?
}
}
答案 0 :(得分:5)
是的,这很有用。
内部的常量构造函数对所有类型的窗口小部件都非常有用,包括StatelessWidget和其他较不常见的窗口小部件,例如InheritedWidget或RenderObjectWidget。
请记住,所有小部件都可能带有参数,因此您可能需要:
class MyStateless extends StatelessWidget {
const MyStateless({Key key, this.count}): super(key: key);
final int count;
@override
Widget build(BuildContext context) {
return Row(
children: [
Text('$count'),
const Text('static text'),
],
);
}
}
在这种情况下,您的无状态小部件可能会使用不同的参数进行重建,例如:
MyStateless(count: 0);
收件人:
MyStateless(count: 42);
在这种情况下,使用const Text('static text')
不会导致重新生成此文本。