Программирование : Dart & Flutter по-русски
ilx13
Ребята посоветуйте убодный адаптивный чарт
Maks Andrienko
А что ты исправил ?
IB Akhrorov
Нашел где баг)
Maks Andrienko
Так а в чем вообще была проблема ?
IB Akhrorov
_textEditingController.text = _translateProvider.textToTranslate;
Maks Andrienko
Ну и отлично. А то я думал что ошибся уже
Ivan Dembicki
[
"Обнаружил любопытную деталь в Dart\n\n",
{
"type": "code",
"text": "extension DurationExtension on Duration {\n bool get isNull => this == null;\n}\n\n"
},
"Эта конструкция работает!"
]
S
Добрый день , После варификации попадаю на главную стрницу, когда нажимаю кнопку назад , обратно попадает в раздел варификации. Как мне заблакировать , чтоб после варификации не попадало обратно?
Sergey Hottabych
Попробуй Флаттер откатить до более старой версии? Код явно старый: ScopedModel — это древность, и ключевое слово new тоже давно не используется.
Sergey Hottabych
Я недавно смотрел старые примеры по Redux, тоже на v1.2.0 откатывал, с новым не работали.
Sergei We jhdhfdhdfg
А какая архитектура модная? Bloc?
Sergey Hottabych
Я все делаю на Provider + ChangeNotifier, он идеален. Еще думаю Riverpod юзать под сервисы
Dagba
если scoped model древность, то провайдер что когда?
Sergey Hottabych
Провайдер может много чего, что scoped_model не может.
vasilich
Модная древность
Dagba
а какая в них фундаментальная разница?
Sergey Hottabych
Ты через ScopedModel стрим можешь провайдить? Можешь селектором выбрать нужные данные из хранилища?
Sergey Hottabych
А провайдер может.
Dagba
вопрос то был другой
Dagba
ты говоришь так мол это разные вещи
Dagba
хотя провайдер это просто библиотека надстройка над scoped model
Sergey Hottabych
Кто сказал? Их даже разные люди придумывали.
Sergey Hottabych
Скорее, это "переосмысление" scoped_model.
Dagba
а что не может быть такого сценария что человек x берет за основу определенный паттерн и делает надстройку над ней
Dagba
называя своим именем?
Nikita Domnitskii
не спорь с ним, он у нас самый умный
Sergey Hottabych
Я не понимаю, что ты хочешь доказать. Вам упоротый лис писал, что provider == scoped_model, и вы поверили, хотя он ошибается. Провайдер намного функциональнее.
Nikita Domnitskii
при чём тут лис вообще
Dagba
я вообще не знаю кто такой УПОРОТЫ ЛИС
Dagba
у тебя знания строятся только на чужих мнениях
Nikita Domnitskii
представь, у людей может быть мнение
Nikita Domnitskii
шок, правда?
Дмитрий Щербаков
Вот делать нефиг спорить о таком)) скопед модель ласт апдейт в 2018 году , провайдер уже 4.1.3 5 июня был апдейт ??
ilx13
Лис любитель споров
Dagba
он говорит что это рахны архитектуры в фундаметальном смысле
Андрей Козак
архитектура ли провайдер, это спец олимпиада этого чатика
Dagba
аргументы у него что у провайдера фич больше
Sergey Hottabych
У меня знания строятся на чтении документации к провайдеру. И решении тестовых заданий, где он себе отлично показал.
Dagba
так ты написал что мы имеем представление о провайдере только на основе мнения кактого лиса
Dagba
как будто по другому быть не может
Dagba
сам себе противоречишь
S
После регистрации попадаю на главную страницу, после попадание на главную страницу нажимаю кнопку назад , обратно попадает в страницу регистрации. Что мне сделать , чтобы после не попадало обратно на страницу регистрации?
Daniil Kolyasnikov
Да вы ничего не понимаете. scoped_model уже бриллиант ??
Андрей Козак
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/Navigator/pushReplacement.html"
}
]
Дмитрий Щербаков
Удали страницу из стека после успешной авторизации
Nikita Domnitskii
лучшая вообще-то
Андрей Козак
[
"просто provider это обычный di паттерн на виджетах. Provider + ChangeNotifier это уже имхо архитектура ",
{
"type": "bot_command",
"text": "/thread"
},
""
]
Андрей Козак
надо опрос запилить
Nikita Domnitskii
даже не ди
Nikita Domnitskii
ди про другое
Dagba
в моем понимании архитектура приложения это полный цикл работы
Evgenii Elchev
сервис локатор если быть точным)
Dagba
а вы называете state manegement
Dagba
clean это архитектура
Nikita Domnitskii
а он его как архитектуру использует! ты не шаришь просто
Dagba
в провайдере или в change notifier?
Evgenii Elchev
так заголовок такой)
Evgenii Elchev
у статьи был)
Sergey Hottabych
В ChangeNotifier
Evgenii Elchev
а заголовки врать не будут)
Дмитрий Щербаков
У провайдера в доке написано что "Это обёртка над inherited widgets" ;)
Dagba
а скопед модел это что?
Evgenii Elchev
я кстати в коде этого не нашел) кажется это альтернативная реализация, ну или я плохо смотрел
Nikita Domnitskii
это не провайдер *ба-дум-тс*
Дмитрий Щербаков
виджет передающий Reactive Model своим потомкам)
Dagba
а как он это ДЕЛАЕТ?
Sergey Hottabych
Там написано, что тоже обертка над InheritedWidget, и использует под капотом AnimatedBuilder для перерисовки.
Dagba
наверное проблема тех кто пишет доки к "архитектурам" в флаттере что они пишут слишком высоко абстрактно
Dagba
тем у кого не было бэкграунда с других платформ
Dagba
вернее они неправильно это делают
Evgenii Elchev
Суть в том что арзитектура это всегда абстрактно
Evgenii Elchev
Конкретные уже конкретные реализации (сори за тафталогию)
Sergey Hottabych
[
"DI — это когда пишешь инсталлер / конфиг, в который пишешь, какие интерфейсы на какие реализации подменять.\nИ помечаешь в коде все поля ",
{
"type": "mention",
"text": "@Inject"
},
", он тебе заинжектит инстансы.\nА провайдер — там вручную ресолвишь данные из стора. Так что он не DI.\nDI я, честно говоря, под Flutter не видел. Да и нужен ли."
]
Дмитрий Щербаков
В итоге ни то и не другое не архитектура )
Dagba
я имю ввиду понятия которые они используют в доках
Evgenii Elchev
Вот flux абстрактный, а либа redux от Брайна конкретная, Bloc абстрактный, а либа от фалангела конкретная
Sergey Hottabych
А я спорил разве? И то, и то Inherited. Я говорил, что у провайдера фичей больше.
Evgenii Elchev
Вообще нет
Sergey Hottabych
Ну те DI, которыми я пользовался, там так было.
Sergey Hottabych
Strange и Zenject.
Dagba
? ты сказал что в фундаментальном смысле это разны вещи потому что у провайдера фич больше
Sergey Hottabych
Где я такое сказал?
Evgenii Elchev
[
"У меня есть хорошая статья про инверсию управления ",
{
"type": "link",
"text": "https://habr.com/ru/company/redmadrobot/blog/352088/"
},
" ну и про di как подвид там тоже написано"
]
Ильдан С.
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=7YadXDGX1ag"
}
]
Андрей Козак
di пропихивает в конструктор созданные по графу зависимости, в serviceLocator класс запрашивает свои зависимости
Dagba
Dagba, [2 Jul 2020, 9:29:28 PM]: а какая в них фундаментальная разница? Sergey Hottabych, [2 Jul 2020, 9:30:10 PM]: Ты через ScopedModel стрим можешь провайдить? Можешь селектором выбрать нужные данные из хранилища? А провайдер может. Dagba, [2 Jul 2020, 9:31:01 PM]: вопрос то был другой ты говоришь так мол это разные вещи хотя провайдер это просто библиотека надстройка над scoped model Sergey Hottabych, [2 Jul 2020, 9:35:53 PM]: Кто сказал? Их даже разные люди придумывали. Скорее, это "переосмысление" scoped_model. Dagba, [2 Jul 2020, 9:36:49 PM]: а что не может быть такого сценария что человек x берет за основу определенный паттерн и делает надстройку над ней называя своим именем?
Evgenii Elchev
Понятия вообще размытые в it теории, прямо супер жёстко размытые, ещё и по несколько значений имеют
Dagba
это все зависит от контекста
Dagba
понятно что много имеют значений
Dagba
смотря какой конекст
Evgenii Elchev
Так быть не должно, понятия должны быть однозначны и это меня очень сильно бесит, что они не такие)
Evgenii Elchev
Тут ещё многие значения выросли из заблуждений
Dagba
согласен может быть и не должно, поэтому надо нанимать лингвиста))
Dagba
но для среднего разработчика не сложно в контексте определить значение слова
Sergey Hottabych
Ты, видимо, меня понял не так. Я не сказал, что они фундаментально разные. Я сказал, что в провайдере фичей больше, и это не "одно и то же под разными названиями, спустя 2 года".
Evgenii Elchev
Вот например было сложно model и означало он domain model, то есть какая то предметную область, а в коде это бизнес слой и слой доступа к данным. Потом появился MVC, потом его неверно истолковали и пришли к выводу что контроллер это логика (что неверно) а model это данные. Потом в вебе был свой MVC и данные брались из orm, и model стали применять к сущности данных (например user)
Evgenii Elchev
И сейчас у нас часто моделью называют dataobject
Evgenii Elchev
То есть тупой объект с данными
Evgenii Elchev
Но это настолько вьелось в обиход что все так говорят
Dagba
не знаю где так называют
Evgenii Elchev
А вот и нет, я много раз видел как люди эти понятия путали)
Dagba
я обычно называю дата модель
Dagba
если имею ввиду структуру
Evgenii Elchev
Да много где)
Dagba
бизнес логика это сервис
Evgenii Elchev
Сервис это частность)
Evgenii Elchev
Он часть модели)
Dagba
если говорить в контексте моделей
Dagba
и логика его обработки
Fortune's Desire
а чего перестал публикации делать?
Dagba
дата модель и сервис
Fortune's Desire
А, это не твои личные
Андрей Козак
а чо так поздно на IOS di пришел? В .NET если видели проект без DI еще лет 10 назад по лицу били
Андрей Козак
как вообще тесты писать без di?
Evgenii Elchev
Времени очень мало, и хочется очень много всего. Вот флаттер потыкал, видосы на канал позаписылвал, пет продает пишу, английский хочу до разговорного) год оф во сама себя не пройдет)
Fortune's Desire
пет продакшен?
Evgenii Elchev
Не это моя статья, только в корпоративном блоге
Алексей Анисов
он давно есть
Fortune's Desire
ппц, на самом деле да, 14 часов в день как-то мало
Evgenii Elchev
Очень мало, время это то чего мне очень не хватает, если бы я мог я бы его покупал)
Андрей Козак
следил за этой темой, даггер на ведре пару лет назад ток популярным стал, а про иос вообще не в курсе был
Алексей Анисов
тайфун в обжс оч давно существует
Evgenii Elchev
Только по лицу у нас не бьют если его не используешь и мало кто использует если топы не считать)
Алексей Анисов
и библиотека тут не главное
Андрей Козак
дык а как вы тесты пишите? все зависимости в конструктор а потом монструозно руками зависимости проталкиваете?
Evgenii Elchev
Вот я кстати эту статью писал, потому что надоело слушать что di это обязательно библиотека типо тайфун или свинжект) решил просветить)
Evgenii Elchev
+, я либы не использую
Алексей Анисов
тесты без фреймворка не написать?
Андрей Козак
тесты нельзя писать, когда херачишь new из класса
Алексей Анисов
да ладно? как-то получилось
Андрей Козак
как мокаешь зависимость?
Evgenii Elchev
[
"Вот так ",
{
"type": "link",
"text": "https://youtu.be/vJikZvTfrdg"
},
""
]
Алексей Анисов
протокол передается в конструктор, реализуешь протокол моком ?\_(?)_/?
Алексей Анисов
можешь хоть замыкания (функции) передавать в конструктор
Evgenii Elchev
Хорошо когда у тебя есть видос или статья на любую тему)
Dagba
[
{
"type": "mention",
"text": "@Jonfir"
},
" подписался??"
]
Андрей Козак
ну я про это же, если уже все так пишут, то чтобы просто контейнер не подключить и руками не проталкивать зависимости
Алексей Анисов
ну на самом деле просто приложения по началу не большие и пилят один-два синглтона которые воротят всю логику
Алексей Анисов
и на старте это даже удобно
Evgenii Elchev
Контейнер что даёт по сравнению с руками? Динамическую регистрацию зависимостей. А мне это ни разу не пригодилось)
Андрей Козак
когда у тебя большой класс, с 5 зависимостями, мне лично лень писать new T(new D(new S),new B(),new DT) и т д
Андрей Козак
di подключаешь и кайфуешь
Алексей Анисов
если язык не дает других средств, то как делать?)
Алексей Анисов
в сишарпе или жвм ты можешь через рефлексию или annotation processing все это сделать и даже типизировано
Алексей Анисов
а на свифте такой магии нет)
Evgenii Elchev
А как контейнер решает эту проблему? Магические в рантайме внедрит?
Андрей Козак
вот теперь тогда понятно)
Evgenii Elchev
Так и в дарте нет
Алексей Анисов
обжс делал это в рантайме но там с отладкой беда была, потому что все не типизировано
Андрей Козак
зарегистрировал все в одном месте, запросил T, он тебе собранный класс возвращает
Андрей Козак
надо замокать, зарегистрировал мок
Evgenii Elchev
Пример покажи
Андрей Козак
[
{
"type": "link",
"text": "https://habr.com/ru/post/235995/"
}
]
Алексей Анисов
да по сути просто синглтон который может создать любую зависимость
Андрей Козак
c#, на яве похоже но все на аннотациях
Алексей Анисов
просто в некоторых языках часть этого синглтона генерится и не дает сделать фигню
Алексей Анисов
суть DI всеравно в том чтобы использовать абстракции, а не реализации
Андрей Козак
[
"ну да, на ",
{
"type": "link",
"text": "ASP.NET"
},
" например, просто фабрику контроллеров переопределяешь и при приходу запроса поднимается контроллер, граф зависимостей и DI автоматом собирает все с нужными зависимостями. Оч удобно"
]
Андрей Козак
как запрос заканчивается - все уничтожается
Григорий Коваленко
задрали эти DI либы
Evgenii Elchev
Это сервис локатор
Evgenii Elchev
Я и руками такой напишу)
Evgenii Elchev
Как уже сказали это просто синглтон
Андрей Козак
Ninject классический DI framework, не самый популярный
Алексей Анисов
это смотря как посмотреть))
Андрей Козак
+- в некоторых есть сахарок по авторегистрированию по названию файлов, или регистрация через xml файлы (когда то было популярно)
Алексей Анисов
если везде иметь доступ на контейнер - то сервис локатор. Если зависимости бесшовно получаешь в конструктор/проперти без контейнера то DI ))
Андрей Козак
+. Но в любом DI можно доступ к контейнеру получить, только непонятно зачем
Алексей Анисов
видимо чтобы покрыть эдж кейсы
Алексей Анисов
иногда надо)
Evgenii Elchev
Вот я di для флаттера сделал в проекте
Evgenii Elchev
Мне кстати сервис локаторы не нравятся, постоянно путаешься что от чего зависит и посмотреть можно только внутри класса
Алексей Анисов
так в этом их проблема)
Алексей Анисов
зависимости класса не явные
Evgenii Elchev
Ну кому то нравится )
Алексей Анисов
хз, че сложного в конструктор передать
Алексей Анисов
из того же сервис локатора
Evgenii Elchev
Кода много
Evgenii Elchev
В этом поинт обычно
Алексей Анисов
ну как полумера - хотя бы в lazy var их объявить
Алексей Анисов
на андроиде так делаю ??
Алексей Анисов
их хотя бы видно в верху класса тогда
|