Flutter Heroes
📈 Аналитический обзор Telegram-канала Flutter Heroes
Канал Flutter Heroes (@flutterdev) языкового сегмента Английский является активным участником. Сейчас сообщество объединяет 24 985 подписчиков, занимая 4 956 место в категории Технологии и приложения.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 24 985 подписчиков.
Согласно последним данным от 27 января, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -163, а за последние 24 часа — 0, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 0%. В первые 24 часа после публикации контент обычно набирает N/A% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 0 просмотров. В течение первых суток публикация набирает 0 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 0.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как developer, firebase, widget, hemantpra389, engineer.
📝 Описание и контентная политика
Описание канала не предоставлено.
Благодаря высокой частоте обновлений (последние данные получены 28 января, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
typedef Update<T> = T Function(T); Update<Game> moveForward() => (game) { final nposition = game.position.step(); if (!game.map.isValid(nposition)) return game; return game.update(position: nposition); }; Now I want to combine this approach with Riverpod.I have to create a subclass of StateNotifier to store my Game (or any other updateable value because I'm doing this is the most generic way of course):class UpdateableStateNotifier<T> extends StateNotifier<T> { UpdateableStateNotifier(T initialState) : super(initialState); void apply(Update<T> update) => state = update(state); ... To make creating a provider look nicer and to omit all the explicit types otherwise required, I also provide this utility factory function:... static StateNotifierProvider<UpdateableStateNotifier<T>, T> provider<T>(T initialState) => StateNotifierProvider((_) => UpdateableStateNotifier(initialState)); }Then I can setup my gameProvider like so:
final gameProvider = UpdateableStateNotifier.provider(initialGame);Later, I can access the current game state as usual:
Widget build(BuildContext context, WidgetRef ref) { final game = ref.watch(gameProvider); ... To easily apply updates, I extended WidgetRef:extension UpdateableStateNotifierExtension on WidgetRef { void apply<S>(StateNotifierProvider<UpdateableStateNotifier<S>, S> provider, Update<S> update) { read(provider.notifier).apply(update); } } Now, my UI can do this in callbacks or other actions:ref.apply(gameProvider, moveForward());There is a bit more work involved because I also support undo (and redo, because why not) and Update actually returns a FutureOr<T>, but the principle stays the same. November 13, 2021 at 04:15PM by eibaan https://ift.tt/3F4p1SG
