【发布时间】:2020-03-12 05:16:29
【问题描述】:
在 Flutter 应用程序中,假设我有一个内部包含多个小部件的小部件类(即,只是一个典型的单个长 Widget build() 类,其中包含多个小部件)。然后将它们拆分为多个具有自己的类的子小部件:例如,
之前:
class Parents extend StatelessWidget{
Widget build(BuildContext context){
//Parent
return Column{
children: <Widget>[
//Child 1
Container('something inside'),
//Child 2
Container('something inside'),
//Child 3
Container('something inside'),
...
]
}
}
}
现在:
class Parents extend StatelessWidget{
Widget build(BuildContext context){
//Parent
return Column{
children: <Widget>[
//Child 1
myContainer('first child'),
//Child 2
myContainer('first child'),
//Child 3
myContainer('first child'),
...
]
}
}
}
class myContainer extend StatelessWidget{
Widget build(BuildContext context){
//child reusable widget
return Container{
'something inside'
}
}
}
我的问题是Widget build(BuildContext context)。
在上面的例子中,我在父类中调用了myContainer类3次。在我看来,这意味着 build 小部件被调用了四次(与父级调用一次,每个子级调用 3 次)。
我的意思是,我在网上看到一堆例子,推荐使用上述方法,但这真的是一种正确的方法吗?我可能还不完全理解颤动,但由于它是一个小部件树,所以将父级 context 简单地传递给子级会更有效(就性能而言)?如下:
class myContainer extend StatelessWidget{
final BuildContext parentContext;
Widget build(parentContext){
//child reusable widget
return Container{
'something inside'
}
}
}
这两种方法似乎都有效,但我想看看我的思维方式是否偏离了方向。我不完全理解Context 的机制,任何澄清都将非常感谢!
谢谢大家!
【问题讨论】: