Почему в разработке программного обеспечения чаще используется виджет без состояния, чем виджет с состоянием?

Я хотел сделать коммерческое приложение. Все предлагают мне сделать все приложение без гражданства. Почему мы используем виджет без состояния вместо виджета с состоянием для создания тяжелого программного обеспечения?


person tuhin chowdhury    schedule 06.12.2020    source источник
comment
Без гражданства легче рассуждать, так как вам не нужно думать о текущем состоянии.   -  person Ted Klein Bergman    schedule 06.12.2020
comment
Почему бы вам не спросить людей, которые это предложили? У них уже должно быть это объяснение, и вы уже говорите с ними.   -  person nvoigt    schedule 06.12.2020


Ответы (2)


StatefulWidget требуется класс State. Это означает, что пользователь может посмотреть только на 2 класса, которые пишет разработчик. Поддержка большего количества кода требует больше работы.

Каждый StatefulWidget может выполнять любую работу. Он может создать HTTP-клиент и сделать сетевой запрос. Он может открыть файл и прочитать его. Widget код не должен делать такие вещи. Когда вы ставите перед собой задачу написать StatelessWidget код, вы избегаете искушения поместить бизнес-логику в Widget код.

Это усложняет вашу жизнь, когда вы вкладываете логику в виджеты. Вы должны протестировать этот код, и теперь вы должны прочитать каждый отдельный виджет, когда есть ошибка или когда ваш товарищ по команде пишет новый код виджета, который имеет логику.

Это также означает, что у виджета есть несколько причин для изменения. StatefulWidget изменится, если логика неверна или если пользователю не нравится внешний вид пользовательского интерфейса. Принимая во внимание, что StatelessWidget изменит только внешний вид пользовательского интерфейса.

Тяжелое программное обеспечение может быть создано только в том случае, если составляющие его части легкие, иначе вы застрянете при добавлении новых функций. StatelessWidget легче, чем StatefulWidget.

person Michael Lee    schedule 06.12.2020

Нет такого понятия, как приложение без состояния. Называя что-то приложением, вы уже устанавливаете тот факт, что у него есть состояние, по сравнению, скажем, с изображением.

Проблема в том, что вы задали кому-то вопрос в контексте, и они дали вам объяснение в этом контексте. И когда вы не поняли это объяснение, вы не попросили их объяснить, а вместо этого решили прийти сюда и задать свой вопрос здесь, без какого-либо контекста, который у вас был раньше. Мы никак не можем угадать этот контекст. Я уверен, что они были правы в контексте, который у вас был, но с исчезновением контекста оставшееся простое изложение факта просто неверно. В следующий раз сразу просите разъяснений, когда что-то не понимаете, чтобы сохранить контекст.

Возможно, вы имели в виду, почему вам не следует использовать StatefulWidget в качестве первого виджета в дереве?

Вы можете найти объяснение здесь: runApp генерирует исключение с виджетом с отслеживанием состояния

Может быть, вы хотели узнать разницу между виджетами с сохранением состояния и без сохранения состояния?

Вы можете найти объяснение здесь: Что такое связь между виджетами с состоянием и без состояния во Flutter?

person nvoigt    schedule 06.12.2020