【发布时间】:2021-01-15 11:41:54
【问题描述】:
我正在尝试在计数器应用程序上实现 Provider 状态管理,以更好地了解 Provider 的功能。我针对两个不同的文本小部件添加了两个按钮。所以,现在每当我点击这两个小部件中的任何一个时,Text 小部件都会得到更新并给出相同的值。我希望两个小部件彼此独立。 我已经使用了 ScopedModel 并得到了想要的结果,但现在我想尝试使用 provider。
图片链接:https://i.stack.imgur.com/ma3tR.png
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
print("====Home Page Rebuilt====");
return Scaffold(
appBar: AppBar(
title: Text("HomePage"),
),
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
//crossAxisAlignment:CrossAxisAlignment.center,
children: [
Consumer<CounterModel>(
builder: (context, value, child) {
return CustomWidget(
number: value.count.toString(),
);
},
),
Consumer<CounterModel>(
builder: (context, value, child) {
return CustomWidget(
number: value.count.toString(),
);
},
),
],
)),
);
}
}
class CustomWidget extends StatelessWidget {
final String number;
const CustomWidget({Key key, this.number}) : super(key: key);
@override
Widget build(BuildContext context) {
print("====Number Page Rebuilt====");
return ButtonBar(
alignment: MainAxisAlignment.center,
children: [
Consumer<CounterModel>(
builder: (context, value, child) {
return Text(
value.count.toString(),
style: Theme.of(context).textTheme.headline3,
);
},
),
FlatButton(
color: Colors.blue,
onPressed: () =>
Provider.of<CounterModel>(context, listen: false).increment(),
child: Text("Click"),
),
],
);
}
}
【问题讨论】: