Программирование : Dart & Flutter по-русски
Roman Vasiliev
не обязательно
Daniil Kolyasnikov
Оповещение это не данные.
Daniil Kolyasnikov
Это вызов слушателя
Evgenii Elchev
[
"Это поток) ну вернее почему это не может быть потоком?\n\n\n",
{
"type": "link",
"text": "https://pub.dev/documentation/rxdart/latest/rx/BehaviorSubject-class.html"
},
""
]
Roman Vasiliev
это читалово уровня суицидальных мыслей, можно обмозговать, но всерьез воспринимать не стоит
Mitai
ой этот холивар уже с бородой
Evgenii Elchev
Все парадигмы довольно бесполезные штуки. Правильно опираться на концепции. Например на концепцию класса)
S
а как вы учили ооп в дарте , можете дать советы ?
Roman Vasiliev
я учил ооп по java
Evgenii Elchev
Я учил в джава, php, swift
Daniil Kolyasnikov
Это может быть чем угодно, но конкретно в данном случае реализован Обсервер, соответственно его идея в том, что при изменении значения он пинает слушателей. В stream как мне кажется, реализована другая абстракция, есть труба данных, вход и выход. Мне кажется, что это плохая идея смешивать их.
S
я так понял ооп в любой языке одинаково, да?
Evgenii Elchev
Прочитал тонну холиваров, определены, изучил функциональное программирование и понял что только стихи возводят все в обсыплют)
Evgenii Elchev
Ну я вот тебе бехейвор сабдзет скинул. Мне кажется он вполне работает к нотифаер) но в общем не вижу смысла спорить. Если тебе кажется что не стоит то не смешивай. Я бы смешал)
Evgenii Elchev
Напишу себе пожалуй NotifireSubject. Как декоратор над вэлью нотифаером.
Daniil Kolyasnikov
[
"Так и я не запрещаю. В общем то уже дописываю \nclass ValueStreamUpdate extends ValueNotifier {\nfinal StreamController stream;\n ValueStreamUpdate(",
{
"type": "link",
"text": "this.stream"
},
",T value) : super(value) => ;"
]
Evgenii Elchev
Это ты сам такое пишешь?
Roman Vasiliev
ChangeNotifier кстати нельзя остановить
Evgenii Elchev
Значит готовго ничего нет. Это я и хотел узнать
Evgenii Elchev
Подожди. Вроде контроллеры на его основе можно. Но на память не скажу
Roman Vasiliev
только что чекал, от него можно только отписаться
Evgenii Elchev
И я же про вэлью нотифаер
Roman Vasiliev
или диспознуть, но это другое
Roman Vasiliev
а сек тогда
Roman Vasiliev
он такой же
Evgenii Elchev
Ну тогда можно добавить ему интерфейс поражающий стрим
Evgenii Elchev
И стрим уже конкретный грохать) усе константенно. Ладно. Спс за ответы, буду думать
Roman Vasiliev
этот нотифаер по сути же как лайтовый BehaviourSubject
Evgenii Elchev
Кстати то что idea не умеет импортиры прописывать от extension это общая фишка или только у меня проблема?
Evgenii Elchev
Вот мне бы хотелось сделать из него полноценный)
Roman Vasiliev
свой, личный)
Evgenii Elchev
Можно чужой) не суть)
tdesc
шел первый год десятилетнего карантина
Roman Vasiliev
Шел первый год карантина, чипы из вакцины начали чесаться в попе
Nikita Domnitskii
Дартовский лсп пока не умеет
Evgenii Elchev
Дико не удобно, из за этого не хочется экстеншены писать(
Nikita Domnitskii
Есть такое, да
Evgeny Cherkasov
Когда приложение закрыто дартовского кода нет
roman G ??
В каком смысле?
roman G ??
Какой тогда код исполняется в изоляте?
Sergey Salnikov
ты хоть прочитал два сообщения сразу после того на которое ответил? или чукча писатель?
Evgeny Cherkasov
Ну если работает foreground service, нельзя сказать что приложение закрыто
Sergey Salnikov
здесь людей с мобильным опытом не так много люди не понимают разницу между нет процесса, не видно ui, нет процесса с сервисом для них приложение закрыто - нет основного flutter isolate, т.е. в разрезе андроида нет таска с flutter активностью - их dart код не исполняется
?? Назар Калитюк
У меня есть ListTile с картинкой из интернета и текстом. Текст есть сразу, а картинку оно грузит. Как сделать, чтоб ListTile отображался только тогда, когда картинка его загрузилась?
Константин Буланов
Вроде так не делается. Типа хреново для пользователя. Крути колёсико на месте картинки пока грузится.
Andrew Vasilevskii
Добрый вечер, подскажите пожалуйста, можно ли использовать fabric конструктор, который в целом выполняет работу обычного именованного конструктора, или это нежелательно? пример: у меня фабричный конструктор, который достает из json поля и просто вызывает обычный конструктор
Roman Vasiliev
а кто-то так делает?
Ihor Levchenko
Ничего себе сколько здесь уже людей.. Даже перегнали сообщество Go. Решил делать ставку на Дарт/Флаттер как следующий виток развития :)
Ihor Levchenko
Мне интересно, кто-то юзает это для бекендов ? А то оно позиционируется как кроссплатформенный мобильный фреймворк..
???????
Прально. Очень быстро растет. Каждые пару месяцев - крутые апдейты с фичами
???????
Не фреймвок, язык
???????
Да, дарт на бэке отлично себя чувствует
???????
Флатер это сугубо UI фреймвок
???????
Для бэка можешь начать с shelf - он простенький, аналог gin в Go считай
Ihor Levchenko
Ну я имел ввиду за Дарт
???????
Помасштабнее - aqueduct
Ihor Levchenko
А что тут по экосистеме ? ORM и все такое ?
???????
Из подводных камней как для меня - ну пока адаптеры для субд такое себе
???????
Вот-вот как раз) Но жить можно
Ihor Levchenko
За этот читал, друг говорил. Выглядит по докам перспективно
???????
На бэке можешь либо пихнуть в докер с dart-sdk, либо собрать dart2native бинарник под любую платформу
Ihor Levchenko
да вот меня дарт привлекает своим dart2js и dart2native
???????
Я пишу на шинде, прям на шинде в wsl собираю под линупс и закижываю на дебиан базед ось
?? Назар Калитюк
я пробую aqueduct. Нужно учесть, что не работает на дарт 2.8. Нужен 2.7 пока
Ihor Levchenko
и вообще во флаттере попиксельный рендер себя гениальная идея
Ihor Levchenko
наверное единственный новый инструмент .. или даже платформа общего назначения
???????
Угу, реально без альтернатив, кто бы что не говорил
???????
Остальные пока только пытаются (котлин, сисярп), но дарт уже.
Ihor Levchenko
шарп, мне кажется, не захотят отвязывать людей от винды.. чисто коммерческий интерес котлин это жаба и jvm, бинарник получить сложно.. но если и получить его, то размер хелоу ворлда = jvm + код = овер 200мб, что тоже не годится. вот и я анализируя подумал что альтернатив нет)
Ihor Levchenko
ну типа стремно что пока что не популярный флаттер/дарт, хотя хотелось бы чтобы он был популярней
???????
Ну яндекс, врайк, озон - уже пользуют флатер
Roman Vasiliev
Шарп там вроде уже отвязали
Roman Vasiliev
NET Core или что-то такое
???????
Это не про UI, ну и эзмарин чото както не выстрелил.
???????
Мелкомягкие будут пытаться сделать первую ось по настоящему кроссплатформенную (если гугл с фуксией раньше не успеет)
Fearless Cry
Они вроде только ангуляр дарт
???????
Вечер воскресения. НЕ СУДИ МЕНЯ
?? Назар Калитюк
а мобильное приложение на чем?
Roman Vasiliev
Кстати да, но я думаю винда заочно не вывезет, потому что винда
Fearless Cry
Двойку в трудовую как обычно
Roman Vasiliev
Никто не захочет на одни и те же грабли наступать
Roman Vasiliev
А как загнется винда, то станет сомнительным последующий успех интела, амд туда же
Denis Chalokyan
Ребята, вот, есть несколько виджетов. Считай, что одинаковых. Все созданы одним классом. А как через Provider обрабатывать события на конкретном и state передавать только ему из ChangeNotifier?
???????
А провайдеру какая разница что там за виджеты?
???????
Ему важно какой у него класс передаешь
???????
В своих виджетах ты уже подписываться будешь
Sergey Hottabych
Ты провайдеру даешь команду, он что-то меняет в себе и уведомляет об этом подписчиков. Хочешь, чтобы остальные виджеты не перерисовывались — не подписывай их.
Sergey Hottabych
Ну ещё Unity компилируется под все платформы. Но там UI просто ужасный. Так как она все же под игры заточена, а не под верстку UI. Так что Флаттер она не заменит.
Sergey Salnikov
как дать команду провайдеру? upd ты понимаешь что такое provider?
Sergey Hottabych
Provider.of (context, listen: false).add(item);
Sergey Hottabych
например
???????
Эм, а где тут ты провайдеру что то даешь?)
Sergey Salnikov
таааак уже теплее где команда провайдеру тут?
Sergey Hottabych
я ему говорю: "провайдер товаров, добавь в свой _list новый item"
Sergey Salnikov
ты вызываешь метод Goods().add() ничего с провайдером ты не делаешь
???????
Provider это просто виджет. При том иммутабельный)
Sergey Hottabych
че не так-то?
Sergey Salnikov
ты получаешь инстанс чего-то что провайдит провайдер и дёргаешь метод этого чего-то ты ничего не делаешь с провайдером
Sergey Hottabych
справедливое замечание
Sergey Salnikov
круто что ты понял)
Denis Chalokyan
Не уверен. Мне крайне не зашла его документация
Sergey Salnikov
в чём не уверен? provider прост как две копейки
Denis Chalokyan
Совсем не уверен, что понимаю, как работает Provider. Возможно я от него жду большего, чем он может мне дать
Denis Chalokyan
Хорошо. Воз создали вы несколько экземпляров одного класса и хотите, чтобы если ющер кликнул по одному из них, он поменял состояние. Какой правильный вариант использовать?
Denis Chalokyan
Я не говорю про банальный stateful
???????
Провайдер это банальный стейтлесс виджет. Он может предоставлять доступ к ссылке, которую держит.
???????
Просто удобная замена InheritedWidget'у
???????
Это не архитектура, не какаято магия. Просто удобный способ получения доступа к ссылке на объект.
???????
Для начала сам определись по какому из он должен кликнуть.
???????
Ну если примитивно - инкапсулируй их в еще 1 класс
???????
Скажем унаследованный от MapBase
Denis Chalokyan
Да я не могу поверить, что всё так сложно
???????
Что тут сложного?
???????
Там вообще ничего сложного
???????
Это ПРОСТО виджет. Он ПРОСТО предоставляет доступ к ССЫЛКЕ всем своим детям.
???????
Куда уж проще то?
Denis Chalokyan
Нечаянно.
???????
Уноси свою простыню
Константин Буланов
Есть из за 4 версии и введения синтактического сахара. Теперь хрен разберешь что в статьях, а что в документации :(
???????
MultiProvider Povider Provider.of Consumer больше толком ничего и не надо
Denis Chalokyan
А ChangeNotifier?
???????
Это кривые костыли с отсутсвующей архитектурой
Константин Буланов
Вот вот. Понеслось.
???????
Раньше все так мучали scoped model, сча из провайдера делают непойми чо
Roman Vasiliev
сТеЙт мЕнЕдЖмЕнТ
Sergey Hottabych
Ну вот опять вкусовщина. У меня все на ChangeNotifier провайдерах построено
Roman Vasiliev
а зачем там CN для inheritedwidget? я просто не на провайдере сижу, не понимаю прикола
Denis Chalokyan
Так всё же, неужели, если мне надо сделать 4 почти одинаковых InputField, но обрабатывать их немного по разному, мне для каждого нужно отдельный класс писать?
???????
Яж сказал, инкапсулируй во что то, если не хочешь отдельный класс
???????
Отнаследуйся от MapBase и вперед, писать свои костыли)
Sergey Hottabych
В нотификациях-то и весь смысл пакета. Если ими не пользоваться, то это действительно будет "просто удобный способ получения доступа к ссылке на объект"
Denis Chalokyan
Не хочу костыли. Хочу нормальную архитектуру
???????
Провайдер вообще не имеет никакого отношения к архитектуре
???????
Ровным счетом никакого
???????
Если для тебя провайдер это "архитектура", поздравляю, у тебя её нет
Denis Chalokyan
Я же учусь. :)
???????
[
"Ну или нечто, что раньше называли ",
{
"type": "code",
"text": "scoped model"
},
""
]
???????
Что весьма пососно
???????
Если так нравятся подписки провайдера, но при этом не хочешь быть как господин выше - посмотри в сторону MobX, говорят хорошая вещь и толком в стримы уметь не надо.
Константин Буланов
То есть что пока все равно придерживаться BLoC? Из рекомендуемых GOOGLE.
???????
Ващет архитектур куча
Константин Буланов
Мне бы такую чтоб из коробки. Блок от феликса норм.
???????
Стараться надо выбирать +- связаную с реактивщиной (тобишь имеющую хоть какоет отношение к pub/sub), с флатером подругому никак.
???????
Ну MobX попробуй. Говорят достаточно простая. Сам не пробывал.
???????
Там примерно то що хотите - нотифаи
Константин Буланов
Я просто думал что Гугл забил на BloC и пошел в Provider. Собственно и я туда двинул. Но походу зря.
Roman Vasiliev
Ну если на пальцах объяснить почему provider не архитектура. Bloc это что по сути - класс который гоняет события в состояния. Потом мы гоняем его по дереву, но это уже не архитектура. Provider это что по сути - гоняем что-то по дереву. Что-то потеряли, не правда ли?
???????
Я уже замучался вам пересылать сообщение Сергея
???????
[
"provider не стейт менеджмент\nописание требует изменений\n\nвот пруф от его создателя для тех кто не вникает в суть или никогда не пользовался provider'ом\n\n",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=BulIREvHBWg&feature=youtu.be&t=107"
},
""
]
???????
Ребят, Provider это просто StatelessWidget. Элемент UI. Все.
Константин Буланов
Я его его внимательно все послушал. Вы не думайте что я не смотрю и не читаю что вы присылаете. Может правильные выводы пока не могу сделать.
???????
Он не заменяет архитектуру, он заменяет другой виджет, чуть более геморойный в применении - Inherited Widget
Константин Буланов
Наверное я не понял так как не использовал никогда Inherited Widget. Спасибо за пояснения.
???????
[
"Ну а то что вы делаете - раньше называлось ",
{
"type": "link",
"text": "https://pub.dev/packages/scoped_model"
},
"\n\nИмперативщина для инвалидов.\n\nЕго всегда характиризовали как \"для пары экранов и хелловолда - норм\"."
]
Андрей Козак
раз про архитектуру речь, кто что юзает? Mobx, Blocs или Redux?
Андрей Козак
ага) машинально
???????
Business Logic Component
Андрей Козак
юзаю эти блоки, но как то бойлерплейта дофига
Андрей Козак
ну в редаксе врядли меньше, мб что лаконичное кто-либо придумал?
???????
Ну я сча эксперементирую с эвент басом. Но никого не агитирую
???????
Мне с разных углов говорили, что оно не надо. Но по факту никто ничего не сказал, а сам пока минусов не увидел.
???????
Своих шишек набью, мб и поделюсь опытом, если будет успешно и удобно.
Roman Vasiliev
блок юзаю, про мобX узнал значительно позже, поэтому даже не заглядывался
???????
Говорят в МобХ куча удобной кодогенерации и удобно тем кто не может в стримы пока нормально.
Roman Vasiliev
а как она против стримов помогает?
???????
Ну там эти самые нотифаи вместо стримов
???????
И все происходит под капотом
Андрей Козак
ну в js мирке, на него многие с редакса перекатились
Roman Vasiliev
жестко, нет, спасибо
???????
тебе только аннотации надо проставлять
???????
я и не агитирую. Просто говорю, что он довольно популярен. И что может быть удобен тем у кого еще императивное мышление (у новичков)
???????
[
"кетайцы этим пользуются:\n",
{
"type": "link",
"text": "https://github.com/alibaba/fish-redux"
},
""
]
???????
Ну и немного наших соотечественников)
???????
[
"23 мая Surf проведет ",
{
"type": "bold",
"text": "Flutter"
},
" онлайн-воркшоп.\n",
{
"type": "bold",
"text": "Что будет:\n"
},
"— Обсудим предпосылки создания своего архитектурного фреймворка ",
{
"type": "bold",
"text": "Model-Widget-WidgetModel\n"
},
"— А чем был плох ",
{
"type": "bold",
"text": "BLoC"
},
" и ",
{
"type": "bold",
"text": "Redux"
},
"?\n— В кратце: что чем является\n— Для кого эта архитектура?\n— Воркшоп по созданию приложения с использованием ",
{
"type": "bold",
"text": "mwwm\nПрограмма:\n"
},
"11:00 — 11:45 презентация\n11:45 — 12:00 перерыв и общение\n12:00 — 15:00 воркшоп (будет 2 пятиминутных перерыва в 13:00 и 14:00).\n",
{
"type": "bold",
"text": "Регистрация"
},
": ",
{
"type": "link",
"text": "https://surf-studio.timepad.ru/event/1313531/"
},
""
]
Roman Vasiliev
ну у китайцев приложения так себе
Roman Vasiliev
не уверен правда что из-за архитектуры
???????
А глаза щурить пробывал?)
Roman Vasiliev
скоро буду, -6
???????
Сча коррекцию зрения хорошо делают
???????
гдет 40-60к по скидке
Андрей Козак
может подскажет кто
Андрей Козак
По блокам вопросик: Есть ProfileBloc, у него есть состояния: ProfileLoading ProfileError ProfileLoaded Нужно загрузить аватарку: Показать лоадер Дернуть метод загрузки аватарки Дернуть метод обновления профиля Я запихал загрузку аватарки в ProfileBloc, но проблема возникает в случае ошибки, я выкидываю на ошибку ProfileError и "теряется" наличие профиля (ProfileLoaded)
Андрей Козак
походу для загрузки аватарки нужно отдельный блок пилить, но это еще больше лишнего кода
Андрей Козак
на каждый чих по блоку делать чтоли?
???????
Хочешь игнорировать 1 из стейтов?
Андрей Козак
не хочется много блоков(
|