Flutter ScopedModel - это круто
Архитектура Scoped model - отличный вариант для управления состоянием во флаттере. Мне это очень нравится, и вот почему вам стоит тоже!
🔥🔥🔥🔥
Модель
Модель - это класс, в котором вы можете прослушивать изменения и определять свою модель. Вы можете иметь одну или столько моделей, сколько захотите. Было бы более эффективно создавать модели, например, User Authentication, User Feed, TextController, AnimationControllers и т. Д. Сохранение всех этих моделей отдельно и соответствующее отслеживание изменений.
Пример модели
Как вы можете видеть в нашей UserModel, значение userName пусто. Так что, если мы хотим обновить значение userName? С помощью метода changeName ()! У метода есть строковый параметр newValue, который затем устанавливается в _userName. Затем уведомите всех слушателей о новом значении с помощью notifyListeners (). Довольно просто, правда? Вот как это выглядит шаг за шагом.
- Значение userName пусто.
- Мы устанавливаем _userName на новое значение, переданное changeName (String newValue)
- Сообщите всем слушателям о новом значении.
- Виджеты, для которых требуется перестройка пользовательской модели после получения уведомления.
ScopedModel
Поместите это в корень вашего приложения. Думайте об этом как о соединителе магазина от redux.
ScopedModelDescendant
Это виджет для поиска соответствующей модели в дереве виджетов. Он будет автоматически перестраиваться всякий раз, когда Модель уведомляет о том, что изменение произошло. Когда виджет обернут в ScopedModelDescendant, дочерние элементы обновятся в соответствии с изменениями в модели.
Пример ScopedModel / ScopedModelDescendant
Итак, это шаблон для пользовательской Scoped Model, но он не позволяет нам изменять значение userName. Посмотрим, как мы это сделаем.
Это так просто! Вот почему я люблю ScopedModel, его очень легко читать. Конечно, это все личные предпочтения, но если вы новичок, попробуйте ScopedModel.
Я скоро напишу сообщение о том, как иметь несколько моделей и параметров класса в приложении! Надеюсь, вам понравился этот пост :)