你好社区我有一些非常简单的小部件,在我看来,为它们创建单独的无状态小部件没有好处,但如果我需要在某些情况下将它们移动或放置在其他地方。在构建中将它们声明为变量是一个很好的做法。附件是一个例子
@override
Widget build(BuildContext context) {
Widget title = Column(
children: <Widget>[
if (isLargeScreen)
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
InkWell(
onTap: Navigator.of(context).pop,
child: Icon(
...
),
),
],
)
else
Container(
margin: ...,
width: ...,
height: ...,
decoration:...,
),
Align(
alignment: Alignment.centerLeft,
child: Padding(
padding: ...,
child: Text(
...
),
),
),
],
);
Widget paragraph = Padding(
padding: UIPadding.paddingH16,
child: Column(
children: <Widget>[
Text(
...
),
),
Spacing.spacingV8,
Text(
formatCurrency.format(
....
),
style: ...,
),
],
),
);
Widget acceptButton = Button(
buttonType:...
text: 'some text'
onPressed:
....
);
return isLargeScreen
? Material(
borderRadius: const BorderRadius.only(
...
),
child: SizedBox(
width: 376,
height: MediaQuery.of(context).size.height,
child: Column(
children: <Widget>[
...,
title,
paragraph,
const Spacer(),
Divider(
color: ...,
),
Padding(
padding: ...,
child: acceptButton,
),
],
),
),
)
: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
...,
Modal(
...
footerActions: <Widget>[acceptButton],
),
],
);
}
我想知道你是怎么想的,或者你是否知道任何关于这方面的文档。请记住,它们不是函数,而是构建中的变量。
2条答案
按热度按时间xxb16uws1#
由于潜在的性能问题和代码可读性降低,通常不建议在Flutter中的
build
方法中声明小部件变量。最好在类级别声明小部件变量,并在build
外部初始化它们,以提高性能和代码组织。23c0lvtd2#
使用单独的小部件而不是helper方法是一种方法,因为它们可以防止不必要的小部件重新构建,并且您还将拥有干净,可维护的代码。Flutter有一个很棒的视频解释了为什么。link