Pull to refresh

Comments 4

Спасибо. GetX своей универсальностью и отпугивает:( нужно все так поковыряться в нем

А Вы попробуйте с малого, например, с obs/Obx - реактивных состояний.
Как говорится в оригинальной доке:

Если это ваша переменная:

var name = 'Jonatas Borges';

то, чтобы сделать ее реактивной, достаточно добавить obs

var name = 'Jonatas Borges'.obs;

и в UI для реактивного поведения, нужно всего лишь обернуть ее в Obx:

Obx(() => Text("${controller.name}"));

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

И самое главное, вам не надо идти на компромисс между чистотой и принципами ООП. К примеру, чтобы добиться инкапсуляции переменной, не требуется никаких ухищрений (спасибо @AndrewPiterov за решение):

// Делаем переменную приватной
final _name = 'Jonatas Borges'.obs;
// Навешиваем геттер
get name$ => _name.value;
// И сеттер
set name(String value){
  if(value.isNotEmpty){
    _name(value);
  }
}

и все. Реактивность UI не сломается, ничего вообще не надо менять. Obx(() => Text("${controller.name}")) по-прежнему останется реактивным, хотя в других местах кода можно использовать controller.name, как обычную переменную, ведь она таковой и является. Это решение очень изящно реализовано в коде библиотеки, там вообще стоит покопаться для развития.

Как вы думаете, почему при всей своей популярности и супер скорости это творение так и не удостоилось "Flutter Favorite", мб разработчики флаттер знают что то неведомое вам?

Не знаю, мб Вы знаете?
Я отнюдь не призываю к использованию Get тех, кто по тем или иным причинам не хочет этого делать. Я раскрываю тему дополнительного удобства для тех, кто им пользуется.

Only those users with full accounts are able to leave comments. Log in, please.