我有一个程序,我需要在底部导航图标旁边添加一个计数。所以,我正在尝试使用 ChangeNotifierProvider 并将其包裹在我的根小部件周围。如何从 IterableModel 获取计数到我的小部件?
主应用
ChangeNotifierProvider(create: (_) => IterableModel()),
HOME.DART
BottomNavigationBarItem(
icon: Container(
margin: EdgeInsets.only(top: 20.0),
child: ImageWithBadge(
text: 'notification',
iconData: Icons.mail,
notificationCount: "NEED MESSAGE COUNT,
),
),
),
IterableModel.dart
class IterableModel extends ChangeNotifier {
List<InAppMessages> inAppMessages;
int cnt;
IterableModel({this.inAppMessages});
void messageCnt(List inAppMessages) {
cnt = inAppMessages.length;
notifyListeners();
}
IterableModel.fromJson(Map<String, dynamic> json) {
if (json['inAppMessages'] != null) {
inAppMessages = [];
json['inAppMessages'].forEach((v) {
inAppMessages.add(new InAppMessages.fromJson(v));
});
messageCnt(inAppMessages);
}
}
}
我想我需要一个消费者和建设者,但我现在不知道把它放在哪里
答案 0 :(得分:1)
final count = Provider.of<IterableModel>(context).cnt;
在你的构建方法的顶部插入这一行,这样它就可以访问,但也重建整个小部件,一种更好的方法是使用消费者
Consumer<IterableModel>(
builder: (context,model,_) => BottomNavigationBarItem(
icon: Container(
margin: EdgeInsets.only(top: 20.0),
child: ImageWithBadge(
text: 'notification',
iconData: Icons.mail,
notificationCount: model.cnt.toString(),
),
),
),
)