Программирование : Dart & Flutter по-русски
Vadim Lukichev
если про платформу андроид там тоже aot и jit может быть по яве вроде, но прямого сравнения между java и dart по задачам и скорости на разных режимах, не видел. А если сюда еще нативный UI добавить, то холирвар еще интересней будет
Jeka
Всем привет, если я изменяю статическую переменную виджета, из другого класса, виджет будет перерисовываться?
Sergey Barbirosha
1. Виджет перебилдиться если он statefull при вызове setState или через билдеры 2. Лучше не создавать статические переменные, которую нужно менять
Jeka
А на что это влияет?
Makhmud Ushamiev
Смотря для чего тебе переменная вообще?
Makhmud Ushamiev
Хорошо. А как ты из другого класса собирался его менять?)
Jeka
Он при свайпе должен анулироваться, а свайп прописан в другом классе
Jeka
И изменял через статическое поле
Sergey Barbirosha
можно использовать коллбеки
Makhmud Ushamiev
Суть в том что счетчик должен знать, что он должен изменить свой счет при каком то событии. Так что простым изменением значения переменной тут не справиться(
Jeka
Да это понятно, он меняется при тапе на элемент, а свайп описан в другом классе
Jeka
Просто много кто пишет не использовать статик, но почему?
Natali ?? Marketology
Ребят, кто может помочь пару экранов сверстать? ?? Жду в личных сообщениях
Makhmud Ushamiev
Потому что ui не должен знать о бизнес логике
Jeka
Да это одна переменная которая даже не используется больше нигде, и для этого создавать отдельный ивент и стейт в блоке?
Андрей Рудин
если класс дочерний, можешь ему перекинуть функцию, которую он будет дергать.
Makhmud Ushamiev
Нее, у тебя же виджет свайпается? Вот в том месте тогда и сброс делай через коллбек или еще что то там
Андрей Рудин
но все равно statefull должна быть тогда или всякие Provider, Bloc, но лучше GetX
Serg Bell
видимо имелось в виду "не использовать статики НЕПРАВИЛЬНО")) статики - это всего лишь инструмент, подходящий к определённому набору событий, это удобство представления - Colors.white - это доступ к статичному полю класса без его инстанцирования
Makhmud Ushamiev
GetX лучше flutter_bloc? Просто сам на блоке, про гетх не смотрел
Илья Максименко
[
"А как же ",
{
"type": "link",
"text": "Bloc.observer"
},
"?"
]
Яўген
Добрый вечер, подскажите пожалуйста, в gradle файле в параметр resValue устанавливается имя приложения, которое отображается в системе устройства. Как его локализировать?
Sergey Barbirosha
это уже сторонняя либа0
Андрей Рудин
yep, much better
Андрей Рудин
ну че не, я количество кода сократил существенно. все проще. реактивно.
Пашка
хотя если вы в соло пишите
Андрей Рудин
да соло, а что не правильного?
Андрей Рудин
что не так то? на том конце стримы. тот же Bloc только в обертке и проще.
Андрей Рудин
[
"+ маршрутизация :) ",
{
"type": "link",
"text": "Get.to"
},
"(NextPage());"
]
tdesc
вот когда DI заменил архитектуру настал судный день
Андрей Рудин
а что использует?
Андрей Рудин
context ни что иное как DI
Андрей Рудин
по этому поводу ни у кого ничего не бомбит же )
tdesc
контекст ниразу не Dependency injection
Андрей Рудин
тот же Provider через DI прокидывает вниз себя
Андрей Рудин
понимаю, это другое :)
Андрей Рудин
через context
Яўген
Подскажите пожалуйста, как локализировать название приложения
Андрей Рудин
это такая река, сверху вниз, и ты в этой реке ловишь то что тебе надо.
tdesc
контекст функции тоже через DI передается?
Serg Bell
байт на state-management ))
Андрей Рудин
в общем в лом сейчас искать видео, где я это видел, но цепляешь Provider сверху потока context который (по аналогии с рекой) по всему приложению распространяется.
Serg Bell
не втягивайте миня в ваши священные войны плес))
Андрей Рудин
хоть что передается.
Андрей Рудин
ну ок, что такое DI и что такое context ?
tdesc
void main() { var b = "context"; void a(){ var a = "hello"; print("$a $b"); } a(); }
tdesc
DI он про dependency inversion в конструкторы пропихивать зависимости классов
Андрей Рудин
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=K2ampPUTfIQ"
}
]
Андрей Рудин
у него свой DI не спорю.
tdesc
я могу в коде тебе показать что провайдер использует context
Serg Bell
)) это всё из офдоки
Serg Bell
[
"чекай: ",
{
"type": "link",
"text": "https://pub.dev/packages/get"
},
""
]
Андрей Рудин
что в Dart обеспечивает реактивность кроме Stream ?
tdesc
стримы встроены в язык
Андрей Рудин
ну, я про них и говорил
tdesc
ты резко ушел в сторону )
Андрей Рудин
то что async*
tdesc
асинхронные операции
tdesc
со звездочкой другой синтаксис для генерации ивентов
Андрей Рудин
async* yield я про это имел в виду, что это стримы
tdesc
все точно так же думают )
Андрей Рудин
а не какой то там класс во flutter который возможно назвается Stream и обеспечивает обертку на стримами в Dart
tdesc
стрим это стрим и есть
tdesc
yield не живет отдельно
Алексей Анисов
Какой-то там класс
Алексей Анисов
Как будто async await не сахар над этими классами
tdesc
async await это future
Андрей Рудин
async await ниже чем эти классы, нет?
Андрей Рудин
он ближе к Dart
tdesc
это все языковые конструкции
Андрей Рудин
а Stream что такое?
Алексей Анисов
Звездочки добавляешь и уже нет, ух ты
tdesc
так бывает в современном мире
Андрей Рудин
))))) карочи уже спор ни о чем пошел
tdesc
я только за DI и контекст вписался
tdesc
стримы это вас понесло )
Андрей Рудин
давайте вернемся по дереву вверх и ответим на вопрос, чем Bloc/Provider лучше GetX ?
Андрей Рудин
hello context
Алексей Анисов
А чем хуже?
Андрей Рудин
кода больше писать надо. оборачивать виджеты, нотификации и все такое.
tdesc
второй вопрос остался без ответа, где тут DI?
Gorohov Valeriy
А что мешает использовать их вместе?
tdesc
неоформившееся сознание не отличающее контекст от di
Андрей Рудин
вообще ничего, но если ты используешь Get зачем Provider и Bloc ?
tdesc
это разные вещи же )
Андрей Рудин
MediaQuery.of(context).size.width где то тут DI
tdesc
вот вижу прям написано
Андрей Рудин
который и есть DI
tdesc
я пример привел что такое контекст
tdesc
контекст есть у каждой функции
Андрей Рудин
ты его прокидываешь сверху вниз
tdesc
билд вызывает функция
tdesc
потому что он есть у всех функций
Андрей Рудин
вызови MediaQuery.of(context).size.width за пределами build'а
Алексей Анисов
Ты кажется контексты путаешь, один контекст - билд контекст. А другой контекст вызова функции (скоуп который она может захватить). И как бы в одном случае он прав
Gorohov Valeriy
Контекст не у функций, контекст у виджетов.
Алексей Анисов
Как бы просто так ты билд контекст в любой функции не получишь
tdesc
чем они по твоему отличаются и build это не функция?
Алексей Анисов
Дело в том что это разные вещи, а ты их уровнял
tdesc
у класса Виджет есть функция build
tdesc
нет не разные это и есть контекст
Алексей Анисов
Тогда в функции билд у тебя два контекста, в а обычной функции один?))
Serg Bell
1. всё есть виджет 2. получишь - просто не "просто-так"
Олжас Сулеймен
контекст ни у кого, че вы несете
Gorohov Valeriy
И? Не все приложение строится на build.
Олжас Сулеймен
build ее юзает как аргумент
tdesc
все приложение на флаттер это функция main()
Алексей Анисов
Любое приложение это функция мейн
tdesc
+ у которого есть функции )
Pavel
Ребят а кто то делал live-трансляции на flutter?
Андрей Рудин
Provider использует DI ?
Алексей Анисов
Почитай уже что такое DI
Андрей Рудин
я знаю что такое DI
Алексей Анисов
Видно что нет
Алексей Анисов
Тут написано что он использует DI?
tdesc
class InheritedProvider extends InheritedWidget {
tdesc
это InheritedWidget
Serg Bell
бля, а что это?.
VA
Помогите пожалуйста. Я создаю динамический список с TextField. Когда пытаюсь забрать значения с помощью TextEditingController, то возвращаются пустышки
Konstantin Zhogolev
код в студию
Serg Bell
слава б-гам, что это написал не я [137 дней без инцидентов]
Oleg Pchelkin
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/BuildContext-class.html"
},
"\nНайдешь что нибудь про DI - возвращайся. И хватит уже фотки рек кидать - DI можно смело вне контекста организовывать, абстрактное преставление конечно хорошо, но не имеет отношения к теме\nПС - все таки речь была про то что DI != архитектура"
]
Oleg Pchelkin
Ты уже говорил это и вернулся) Ну так объясни в каком месте DI равно context? Если у тебя все в голове сложилось, то ты сможешь объяснить это простым языком мне дурачку, если нет, то уж не обессудь)
Андрей Рудин
context используется для DI
Андрей Рудин
ок. вот смотри, тебе надо прокинуть объект сверху вниз, в какое нибудь окно, какие есть варианты?
Oleg Pchelkin
Он используется для DI, но он не есть DI
Oleg Pchelkin
context много для чего используется
Андрей Рудин
давайте сойдемся на том что я не правильно выразился.
Oleg Pchelkin
Речь изначально была про то, что не надо DIем заменять архитектуру, особенно если пишешь большой проект)
Андрей Рудин
ок, тут тогда вообще большой вопрос, что такое архитектура?
Андрей Рудин
если тут два человека не могут сойтись что такое context тогда про архитектуру тут вообще говорить не стоит.
Пашка
архитектура больше понятие команды
Пашка
соблюдение каких то норм, правил
Андрей Рудин
ок, принято, почему GetX не может вписаться в архитектуру?
Пашка
может почему нет но есть принцип ответственности
Пашка
через гет икс ты можешь в любом месте вызвать что нибудь
Пашка
ну вас не смущает это?
Андрей Рудин
ты обернул верхний виджет в Provider и почему ты не можешь вызвать Provider в любом месте?
Пашка
так это глобальный какой то репозиторий/объект
Андрей Рудин
так, а как получить доступ к модели? оттуда откуда ты хочешь?
Андрей Рудин
вот я хочу показать состояние корзины например, мне что делать?
Пашка
ты можешь показать корзину
Пашка
но в странице аутентификации зачем вам корзина?
Пашка
тут больше принцип solid
Андрей Рудин
зачем? обычные ListView Basket с List которая лежит где то в памяти.
Андрей Рудин
у тебя в памяти лежит объект Basket в нем список Product
Андрей Рудин
тебе надо показать этот список в ListView
Андрей Рудин
ты как к нему доступ получишь?
Пашка
вам там лучше объяснят
Пашка
я не лучший в этой сфере
Пашка
и могу где то ошибаться
Святослав Мукорез
Ребята, всем привет! Хочу сказать спасибо этой группе, благодвря ей и ее курсам я смог попасть на работу в Skyeng. Хочу отблагодарить всех ее участников и всех кто помог мне в этом не легком деле. Все кто хочет изучать английский я могу сделать корп скидку, почти 50% на обучение английского языка. Кто хочет пишите в личку, всем рад и успехов!
Илья Силич
В скайенге на флаттере пишут?
Святослав Мукорез
Под новый проект набирают
Constantine
в скайенге даже разрабы — маркетологи
Святослав Мукорез
Об этой группе, кокорин с юлеми писал про эту группу в тг
Constantine
ну с учетом того, что чувак ничего больше не писал тут. это он и есть )
Святослав Мукорез
Эммм, я уже давно в этой группе, мб я не был супер активным юзером, но это не повод меня обвинять в обмане, кому нужно подтянуть язык тот напишет
Evgeny Kot
ЧТо вы накинулись, человек с благими намерениями
Evgeny Kot
[
"Хотя время такое, сложное ",
{
"type": "mention",
"text": "@vulill"
},
" извини"
]
Святослав Мукорез
Спасибо за поддержку
|