Я хотел сделать коммерческое приложение. Все предлагают мне сделать все приложение без гражданства. Почему мы используем виджет без состояния вместо виджета с состоянием для создания тяжелого программного обеспечения?
Почему в разработке программного обеспечения чаще используется виджет без состояния, чем виджет с состоянием?
Ответы (2)
StatefulWidget
требуется класс State
. Это означает, что пользователь может посмотреть только на 2 класса, которые пишет разработчик. Поддержка большего количества кода требует больше работы.
Каждый StatefulWidget
может выполнять любую работу. Он может создать HTTP-клиент и сделать сетевой запрос. Он может открыть файл и прочитать его. Widget
код не должен делать такие вещи. Когда вы ставите перед собой задачу написать StatelessWidget
код, вы избегаете искушения поместить бизнес-логику в Widget
код.
Это усложняет вашу жизнь, когда вы вкладываете логику в виджеты. Вы должны протестировать этот код, и теперь вы должны прочитать каждый отдельный виджет, когда есть ошибка или когда ваш товарищ по команде пишет новый код виджета, который имеет логику.
Это также означает, что у виджета есть несколько причин для изменения. StatefulWidget
изменится, если логика неверна или если пользователю не нравится внешний вид пользовательского интерфейса. Принимая во внимание, что StatelessWidget
изменит только внешний вид пользовательского интерфейса.
Тяжелое программное обеспечение может быть создано только в том случае, если составляющие его части легкие, иначе вы застрянете при добавлении новых функций. StatelessWidget
легче, чем StatefulWidget
.
Нет такого понятия, как приложение без состояния. Называя что-то приложением, вы уже устанавливаете тот факт, что у него есть состояние, по сравнению, скажем, с изображением.
Проблема в том, что вы задали кому-то вопрос в контексте, и они дали вам объяснение в этом контексте. И когда вы не поняли это объяснение, вы не попросили их объяснить, а вместо этого решили прийти сюда и задать свой вопрос здесь, без какого-либо контекста, который у вас был раньше. Мы никак не можем угадать этот контекст. Я уверен, что они были правы в контексте, который у вас был, но с исчезновением контекста оставшееся простое изложение факта просто неверно. В следующий раз сразу просите разъяснений, когда что-то не понимаете, чтобы сохранить контекст.
Возможно, вы имели в виду, почему вам не следует использовать StatefulWidget в качестве первого виджета в дереве?
Вы можете найти объяснение здесь: runApp генерирует исключение с виджетом с отслеживанием состояния
Может быть, вы хотели узнать разницу между виджетами с сохранением состояния и без сохранения состояния?
Вы можете найти объяснение здесь: Что такое связь между виджетами с состоянием и без состояния во Flutter?