Вы можете переместить Provider.of<MessengerRepository>(context, listen: false).setUnreadCount(0);
с intState
на didChangeDependecies
, тогда он будет вызываться только после завершения процесса сборки страницы.
Или так: (менее элегантно)
void setUnreadCount(int value, {bool shouldUpdate: true}){
unreadCount = value;
if(shouldUpdate) notifyListeners();
Затем
void initState(){
Provider.of<MessengerRepository>(context, listen: false).setUnreadCount(0, shouldUpdate:false);
super.initState();
}
Когда вы вызываете его в initState
, если метод сборки завершается до того, как все ваши переменные (пере) назначены, они не будут обновлены, пока вы не вызовете setState
или notifyListeners
Подробнее здесь