поля стейта при билде?
Кейс такой, у меня вся страница обёрнута в блок билдер, есть кнопка в состоянии disabled, если не выбрано время в календаре.
Я не хочу при выборе времени перерисовывать всю страницу, хочу только менять кнопку. Можно как-то так сделать? не придумал как это через buildWhen реализовать адекватно.
я не могу придумать как мне составить это условие. Т.е. любое изменение поля должно возвращать false. А что если я в дальнейшем забуду про эту особенность и вместе с этим полем заменю ещё какое-то, у меня должен будет вызваться build, а он не вызовется из-за условия
прежде всего, убедитесь, что это действительно нужно. Это бьет по перформансу? В большинстве случаев, даже если вся страница перестроилась, не факт, что она будет вся перерисовываться.
это никак не бьёт по перфомансу. Просто кейс, который возникает достаточно часто и хотелось бы найти решение к нему
в каждом конкретном случае по-разному. Но основная идея: если у вас есть участок кода, который надо перестраивать только при конкретном изменение кода, то вы его и оборачиваете в билдер с конкретным buildWhen. Эти билдеры должны быть как можно ближе к изменяемому участку. Но если таких явных мест нет, а перформанс не страдает, то и не надо заниматься преждевременной оптимизацией. А даже если перформанс страдает, то чаще всего есть более простые и наджежные способы его поправить, например, обернуть часть дерева внутри билдера в const widget.
Обсуждают сегодня