Модель Scoped, шаблон BLoC, StreamBuilder и Inherited Widget (или Model), какую из них выбрать и почему?

Я думаю, что теперь у меня есть хотя бы смутное представление о том, как использовать BLoC, Stream Builder и Inherited Widget (или Model) в моем приложении (ничего особенного, но для меня это заняло время), но я играл с Scoped Model.
У меня был своего рода экзистенциальный кризис: я чувствую, что они в основном могут делать то же самое, или, по крайней мере, я могу достичь тех же очевидных результатов с любым из них, но у меня нет компетенции, чтобы понять, когда и почему один лучше другого,

Ответ 1

Модели с прицелом и блок

Вкратце: если у вас небольшие приложения, используйте модели с областями действия, поскольку блок имеет тенденцию усложнять его, а если у вас большое приложение, используйте блок.
Смотрите эту статью для подробного объяснения: блок против scoped_model


Stream Builder vs Inherited Widget

Вот хорошее сравнение между построителем потока и унаследованным виджетом, данное Реми Русселетом: fooobar.com/questions/15551320/...

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

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

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

Ответ 2

Вы можете посмотреть в этом блоке библиотеки. Я использовал это для производства приложений.