Дарт: потоки против ValueNotifiers - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю в команде, которая разрабатывает приложение, которое должно работать с датчиками для представления состояния автомобиля.Это состояние может быть представлено через значения, заданные внешними аппаратными датчиками, или минимально работать через собственные датчики мобильного устройства.И мы хотим иметь возможность менять пакеты датчиков (переключаться между мобильными или внешними датчиками).Мы также хотим, чтобы эти значения отображались асинхронно, и мы исследуем Streams и ValueNotifiers в Flutter / Dart.

Как лучше всего идти (Поток против ValueNotifier)?

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Чтобы дополнить ответ Гюнтера, взгляните на эту статью .Если у вас нет никаких предыдущих знаний об архитектуре BLoC или потоках, это хороший способ начать и реализовать ее.

0 голосов
/ 03 мая 2019

Я собираюсь присоединиться к этому разговору, хотя я опаздываю к игре.Я думаю, что разработчики имеют тенденцию перегружать Streams / BLoC / RX / и т.д.Конечно, архитектура BLoC является мощной, но мне кажется, что она предлагает множество шаблонов по сравнению с чем-то вроде ScopedModel - по сути, то, что кажется версией ValueNotifier внутри InheritedWidget.

ScopedModel хорош, потому что вы можете просто разместить виджет внутри ScopedModelDescendent (очевидно, он находится внутри ScopedModel) и позволить значению, которое вы изменяете в реальном ScopeModel, обновлять дочерние элементы всякий раз, когда вы вызываете notifyListeners() метод.Или вы можете использовать его как способ получить некоторые простые данные или вызвать функцию с помощью .of (context) - что дороже, поскольку он перемещается вверх по дереву виджетов, чтобы найти ScopedModel, поэтому я использую это для таких вещей, какотправка оповещений или инициализация компонента, которому нужны данные из области действия, перед вызовом сборки.

Хотя, прими мой совет с крошкой соли.Я просто нуб с мнением.Что также может помочь объяснить мое презрение к Streams / BLoC.Мне действительно нравятся более простые решения, чем более мощные.Если мне нужно больше силы для ситуации, я, как правило, создаю собственное решение.Как и во всех вещах, для каждого из этих шаблонов есть сценарий использования.

0 голосов
/ 11 февраля 2019

ValueNotifier очень легковесны, и поэтому среда Flutter их использует.
Они не хотели налагать какие-либо потери производительности, независимо от того, насколько их мало, если их можно избежать.

Потоки намного большемощные, особенно их компоновка, которая позволяет легко использовать высокоуровневые функциональные возможности, подобные тем, которые предоставляются https://pub.dartlang.org/packages/rxdart.

Использование ValueNotifier в вашем пользовательском коде для тех же соображений производительности, сделанных командой Flutter, вероятно, является преждевременной оптимизацией.

Я бы предложил потоки для бизнес-логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...