Я написал код для уведомления, и у меня есть значок. На бейдже указано общее количество уведомлений. Как я могу подсчитать прочитанные и непрочитанные уведомления? или удалите значок, когда пользователь щелкнет значок уведомления, а затем покажет значок и количество новых уведомлений при его нажатии. Вот мой код:
// Здесь у меня есть значок уведомления и значок на нем с общим количеством уведомлений
Center(
child: InkWell(
onTap: () {
if (currentUser.value.apiToken != null) {
Navigator.of(context).pushNamed(
'/NotificationsWidget',
);
} else {
Navigator.of(context).pushNamed('/Login');
}
},
child: Container(
child: Stack(
alignment: AlignmentDirectional.bottomEnd,
children: <Widget>[
Icon(
Icons.notifications_none,
color: this.widget.iconColor,
size: 30,
),
Positioned(
child: Container(
child: Text(
_con.notifications.length.toString(),
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.caption.merge(
TextStyle(
color: Theme.of(context).primaryColor,
fontSize: 8),
),
),
padding: EdgeInsets.all(0),
decoration: BoxDecoration(
color: this.widget.labelColor,
borderRadius:
BorderRadius.all(Radius.circular(10))),
constraints: BoxConstraints(
minWidth: 13,
maxWidth: 13,
minHeight: 13,
maxHeight: 13),
),
),
],
),
),
),
);
// Здесь у меня есть контроллер, на котором я слушаю уведомления
void listenForNotifications({String message}) async {
isPageLoading = true;
setState(() {
notifications.clear();
});
final Stream<model.Notification> stream = await getNotifications();
stream.listen((model.Notification _notification) {
setState(() {
notifications.add(_notification);
});
}, onError: (a) {
setState(() {
isPageLoading = false;
});
print(a);
scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(S.current.verify_your_internet_connection),
));
}, onDone: () {
setState(() {
isPageLoading = false;
});
if (message != null) {
scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(message),
));
}
});
}