如何让提供者只重建某些小部件?
How to make the provider rebuilding only certain widget?
我是提供商的新手,我有 2 个关于重建树的问题
我有这个class
class Myprovider extends ChangeNotifier {
bool isFound= false;
bool get isFoundM=> isFound;
void changeStatus(bool status){
isFound= status;
notifyListeners();
}
}
我有 stfl
小部件,其中包含 build method
下的以下代码
Myprovider myProvider = Myprovider ();
Column(
mainAxisAlignment: myProvider.isFound? MainAxisAlignment.center: MainAxisAlignment.start,
children:[
myProvider.isFound? const Text('Hello flutter'):Container(),
const Text('Hello dart'),
TextButton(
onPressed:(){
myProvider.changeStatus(true);
},
child: Text('tab me')
)
]
);
1- 当我点击 Button 时,Hello flutter Text only 只会重建它自己,还是会重建整个树?
2- 我上面专栏中的小部件 属性 怎么样? .. 它只会重建 属性 即使它的父级包装了几个小部件?
如果没有我该如何处理
谢谢
Stateful widget 与 provider 无关。
Stateful Widget 仅在您使用 SetState 时有用。构建上下文下的每个小部件都会更新,它不会帮助您更新任何特定的小部件
使用提供程序构建某些小部件
与提供商合作时,您可以构建某些小部件而无需重建整个内容
为此你可以使用 Consumer
Foo(
child: Consumer<A>(
builder: (_, a, child) {
return Bar(a: a, child: child);
},
child: Baz(),
),
)
注意:-在本例中,只有 Bar 会在 A 更新时重建。 Foo 和 Baz 不会进行不必要的重建。
我是提供商的新手,我有 2 个关于重建树的问题
我有这个class
class Myprovider extends ChangeNotifier {
bool isFound= false;
bool get isFoundM=> isFound;
void changeStatus(bool status){
isFound= status;
notifyListeners();
}
}
我有 stfl
小部件,其中包含 build method
Myprovider myProvider = Myprovider ();
Column(
mainAxisAlignment: myProvider.isFound? MainAxisAlignment.center: MainAxisAlignment.start,
children:[
myProvider.isFound? const Text('Hello flutter'):Container(),
const Text('Hello dart'),
TextButton(
onPressed:(){
myProvider.changeStatus(true);
},
child: Text('tab me')
)
]
);
1- 当我点击 Button 时,Hello flutter Text only 只会重建它自己,还是会重建整个树?
2- 我上面专栏中的小部件 属性 怎么样? .. 它只会重建 属性 即使它的父级包装了几个小部件?
如果没有我该如何处理
谢谢
Stateful widget 与 provider 无关。
Stateful Widget 仅在您使用 SetState 时有用。构建上下文下的每个小部件都会更新,它不会帮助您更新任何特定的小部件
使用提供程序构建某些小部件
与提供商合作时,您可以构建某些小部件而无需重建整个内容
为此你可以使用 Consumer
Foo(
child: Consumer<A>(
builder: (_, a, child) {
return Bar(a: a, child: child);
},
child: Baz(),
),
)
注意:-在本例中,只有 Bar 会在 A 更新时重建。 Foo 和 Baz 不会进行不必要的重建。