Есть некая страница отвечающая отображение отдельных виджетов. Для упрощения предположим что наша страница это шахматная доска и каждая фигура виджет, но размер доски задается сервером и для каждой доски он неизменен. Виджеты на доске однотипные, но могут отличаться изображения, цвет ... Обновление виджетов происходит при поступлении измененных данных через websocket. Сейчас приходит состояние всех виджетов доски и обновляется отображение. За управление состояния отвечает bloc.
Как сделать, что бы обновлялась не вся доска, а только тот виджет для которого изменились данные?
Я предполагаю использовать Map<Guid, Bloc> где Guid это ИД элемента, bloc который отвечает за этот элемент. Далее планирую использовать MultiBlocProvider.
Я подозреваю, что есть более элегантные варианты реализации подобного поведения.
Надстройка над rest- WS, или grpc Я бы выбрал 2е, и следил за изменением определённого типа и обновляет состояние в блоке
использовать rest- WS, или grpc не проблема, в какую сторону копать что бы управлять отдельно состоянием каждого виджета, мне кажется динамически инстанциировать 100 или 1000 блоков не очень хорошая идея.
Если в рамках одного типа может быть несколько объектов, управлять можно.... но перестройка будет для всего типа
Если решить подобное через bloc нельзя то что можно использовать? Как я понимаю может подойти подход который используется в играх, как я понимаю в играх состояние каждого отдельного элемента на экране обновляют независимо от других.
А в чем проблема держать состояния если они однотипные в одном блоке , а нужный виджет обернуть в BlocBuilder и брать состояния для этого виджета , исключив лишние ребилды с помощью buildWhen метода
А это отличная идея. Спасибо!
Я делаю View Model и инжектю ее провайдером
Обсуждают сегодня