Зачем использовать InheritedWidget, пока мы можем использовать Broadcast Streams | StreamBuilder и статические переменные [закрыты]

zero.zero.seven спросил: 28 марта 2018 в 03:32 в: stream

Зачем использовать InheritedWidget, пока мы можем использовать Broadcast Streams | StreamBuilder и статические переменные?

Почему мы должны беспокоиться о модели сокращения, области видимости и т. Д., В то время как у нас может быть простая и чистая архитектура?


1 ответ

Rémi Rousselet ответил: 28 марта 2018 в 04:36

Streams / Sink определенно отлично подходят для хранения состояния. Существует несколько существующих архитектур, таких как BLoC, которые часто их используют.

Но потоки также не полностью заменяют InheritedWidget. InheritedWidget имеет классную возможность переопределить его содержимое только для части экрана. Одним из замечательных приложений этого является Theme.

Вообще говоря Streams отлично подходит для хранения бизнес-логики. Но когда вам нужно сохранить логику пользовательского интерфейса, InheritedWidgets берет верх.

zero.zero.seven ответил: 28 марта 2018 в 05:18
Спасибо, я не ищу замену, я ищу простую и чистую архитектуру
zero.zero.seven ответил: 28 марта 2018 в 05:20
когда я использую StreamBuilder, я на самом деле перезаписываю контент только для части экрана. Я ошибаюсь?
Rémi Rousselet ответил: 28 марта 2018 в 05:22
Ты не прав. InheritedWidget передает информацию своим детям. Пока поток находится внутри виджета. Так что в случае InheritedWidget другие виджеты могут иметь влияние. Хотя с потоками они не могут
zero.zero.seven ответил: 28 марта 2018 в 05:25
Поток не находится внутри виджета, поток транслируется и является глобальным для приложения. нет необходимости передавать что-либо по иерархии, просто сохраняйте состояние в глобальной / статической переменной
Rémi Rousselet ответил: 28 марта 2018 в 05:26
Но вы разделяете тот же поток. Пока вы создаете несколько наследуемых виджетов. Просто попробуйте воспроизвести Theme с потоками, вы легко поймете