Я хочу показать значки в нижних предметах и для этого я делаю следующие шаги.
- Я получаю счет от API, на который я ссылаюсь
initState
. - Я сохраняю длину списка в
Shared Preferences
каждый раз, когда строится список. - Я реализую провайдер, чтобы установить новый счет, вычислить разницу между старым и новым счетом и получить разницу в показать его на значке значка.
вот мой код:
Чтобы получить данные счетчика из API.
init:
*getBadges() async {
var result = await GetBadge().getData();
return result;
}*
Widget build(BuildContext context) {
print(i++);
var badge = Provider.of<BadgeNotifier>(context, listen: true);
getBadges().then((result) {
var _notes = result.data.noteCount;
Provider.of<BadgeNotifier>(context, listen: false)
.setNoteBadge(_notes);
});
}
Вот мой ChangeNotifier:
class BadgeNotifier with ChangeNotifier {
int _notes;
int _seenNotes;
setNoteBadge(int notes) async {
await SharedPreferences.getInstance().then((prefs) {
_seenNotes = prefs.getInt("notes") ?? 0;
});
_notes = (notes ?? 0) - (_seenNotes ?? 0);
notifyListeners();
}
getNoteBadge() => _notes;
}
Сейчас Я держу нижний стати c для и меняю только тело от нижнего бара. Все работает просто отлично. Это работает потому, что весь процесс повторяется, так как метод сборки вызывается очень часто. Как сделать так, чтобы перестраивался только значок, а не весь контекст каждый раз?