Программирование : Dart & Flutter по-русски
Fearless Cry
и мапить друг на друга
Fearless Cry
а просто массив принимать функция не может?
Alexey Z
нет, это системная Flutter функция, трогать нельзя, сделал по старинке
4??uzhoy .
ну вот был у меня дио с кучей описания какой метод дергать, апишки, парсинг, потом я переписал на попроще, стало чище и лучше, но все равно куча шаблонного кода, писать свой генератор? зачем если можно поставить ретрофит
4??uzhoy .
имеешь в виду просто в модели базы иметь метод toApiModel а в моделе апи toDatabaseModel ?
4??uzhoy .
просто хотел бы чтоб можно было модельку и в парсер ретрофита засунуть и в мур
4??uzhoy .
естественно чтобы она была одна а не дублировать каждый класс
Fearless Cry
ну типо того да
Renad ??.
У меня есть приложение для доставки на дом, которое все еще находится в стадии разработки. Мне нужен совет от вас Заранее спасибо
vasilich
Советами мы богаты как ничем другим)
Mitai
кого можно вопросами про классы в личку подоставать?
Artem Osipov
никого, пиши здесь
Maks Kravchenko
[
"Пожалуйста, задавайте вопросы сразу)\n",
{
"type": "link",
"text": "https://nometa.xyz/"
},
""
]
Mitai
есть к примеру класс user у него есть свойства, к примеру гость-зарегестрированный-модер-админ, а вот эти свойства это отдельные классы?
Mitai
ну потому что у каждого из них свои права
Mitai
или например заблоченный который не может ни черта кроме чтения
?? Назар Калитюк
enum можно
Vladimir Avramov
Это привилегии. Они определяют возможности каких-либо действий. Можно реализовать через перечисление. Далее следуюет понятие роли. Роль это контейнер привилегий. В простейшем случае это Set из привилегий.
Vladimir Brejcha
всем привет, подскажите почему не срабатывает скролл Оффсет? то есть при запуске оффсет у скролла остается визуально нулевым
Serge Shkurko
Кажется ты инициализирует контроллер в build методе
Serge Shkurko
Для него есть initState
Vladimir Brejcha
я понял, спасибо)
Vladimir Brejcha
но к сожалению перенос инициализации в initState не изменил поведение
Denis Beketsky
Может у него размеры 0 или такие при котором скролить нечего на первом рендере?
Vladimir Brejcha
Размеры обычные, скролл пальцем работает
Denis Beketsky
Это понятно что пальцем работает) просто на скрине не видно что происходит до
Denis Beketsky
я имел ввиду что может он рендерится 2 раза, и первый раз фактически без контента, из-за этого сбрасывается скролл оффсет
Alexey Kuzin
Всем привет, я новичок во флаттер, не подскажите пожалуйста как организовать код своего приложения, есть ли какие-то устоявшиеся практики, слышал про BloC, но в примерах на гитхабе и Ютубе всё равно все пишут по-разному
Vladimir Brejcha
Понял, продебажу, спасибо
Борис
[
{
"type": "link",
"text": "https://flutter.dev/docs/development/data-and-backend/state-mgmt/options"
}
]
Даниил Чашков
Кто-нибудь сталкивался с тем, что не меняется цвет фона у BottomNavigationBar с заданным свойством backgroundColor?
Даниил Чашков
Я указываю любой цвет, всё равно белый остается
Даниил Чашков
Тип чего, какое одно свойство?
Даниил Чашков
Ты имеешь ввиду указать type?
Даниил Чашков
Я думал, тип данных
Mitai
программисты которые код фоткают, это новый вид какой то
Mitai
у вас че нет программ для нормального скрина?
4??uzhoy .
Ну кто то мета вопросы сыпит, кто то фотоскринит ??
Evgeny Cherkasov
Думаю многие в телеграме с телефона
Evgenii Elchev
Он есть на комп)
ilx13
ребята нет способа заюзать новую либу без полный сборки?
ilx13
я всячину пробую изучаю - а мой комп долго собирает
DK
так ведь, любое изменение кода - ребилд,не?
ilx13
нет, приходится остановить и ребилдить для того чтобы либу смог читать компилятор. это так я считаю
Evgenii Elchev
Но там хот релоад, а новую либу добавил или картинку, и все. Запускай с нуля)
ilx13
потому как пробовал
DK
кстати о картинке.. я так понимаю, что указывать в assets надо именно папку где лежат сами изображения?
DK
а не всю папку, где куча вложенных папок с изображениями,например
ilx13
т.е. можно папку целиком указать?
ilx13
я колхозничаю с каждой картинкой ребилд
Evgenii Elchev
Ну я так и делаю. Но все равно, он их на лету не читает)
ilx13
если добавлю новую сходу прочтет?
ilx13
картинку имеется ввиду
ilx13
все равно удобно если не указать каждую по отдельности
Davron Asrorov
Всё привет, а есть тут кто работал с редактором zefyr? Отзовитесь!)
Aleksandr
Виджет stateless не имеет initstate() , может проблема в этом.?))
???????
Ретрофит это не флатер, это дарт.
???????
Кодогенерация эндпоинтов
???????
Вместе с dio очень неплохо получается иногда.
Семён undefined
просто клон по типу чопера, только на мой взгляд лучше
Семён undefined
жду вторую версию, будет поддержка dart_json_mapper
чумак
Ребят привет, есть какие - то курсы с заданиями?
S
Доброе утро всем, хотел бы узнать о книге "Быстрый старт Flutter-разработчика" - кто ее прочитал?
Mitai
Wrike работает над он лайн курсом, скоро будет, про задания хз будут они там или нет
4??uzhoy .
Here is my first flutter app. Please guide me. I want to make login screen.
4??uzhoy .
Я думал у нас тут вопросы задают не те, но посидел немного в группе англоязычной
4??uzhoy .
Оказывается везде все одинаково
Evgenii Elchev
аха) ты думал там спрашиваю как флаттер пропатчить, для того что бы ускорить графический движек на 0.0002 секунды?
Evgenii Elchev
люди везде одни и теже, и вопросы тоже)
Vladimir Brejcha
У меня statefull
4??uzhoy .
Да, я надеялся хах, ну на общий уровень, что он чуть выше, а так посмотришь, у нас тут будто бы и спецы покруче и общак более осознанный:)
Evgenii Elchev
как правило в чатиках где много синьоров либо перекати поле, либо разговоры на левые темы)
Илья Коваленко
как пропатчить флаттер под freebsd?
Evgenii Elchev
под msword)
Evgenii Elchev
но это в чатик анимешников надо идти)
Aleksey
флуд вроде запрещен правилами чата, но админы наверно чат не читают
Evgenii Elchev
а че им тут читать? 100500 по счету вопрос как сделать кнопку круглой?)
Олжас Сулеймен
Function.apply?
Олжас Сулеймен
в вебе не рекомендуют юзать Symbol
Stan Mitchel
Всем привет, интересно, какой вариант предпочтительнее чисто с точки зрения cod-style:
Stan Mitchel
final Brightness brightness = Theme.of(context).brightness;
Stan Mitchel
final brightness = Theme.of(context).brightness;
Константин Буланов
[
"Коллеги нужна ваша помощь. Есть поток данных в виде STREAM там передается куча параметров. Через BLoC по подписке на STREAM выявляю тип данных что пришел и возвращаю их разобранными через соотвествующий STATE.\nСобственно вопрос. Так как возвращаются разные STATE, а в коде UI в нескольких местах располагаются BLoC.\n",
{
"type": "pre",
"text": "BlocBuilder (builder: (context, state) {\n if (state is ParamOneLoaded) {\n return Text(state.value.toString());\n }\n return ???;\n }),\n...\nBlocBuilder(builder: (context, state) {\n if (state is ParamTwoLoaded) {\n return Text(state.value.toString());\n }\n return ???;\n }),",
"language": ""
},
"\nВот что должен возвращать BlocBuilder если пришел не его STATE. То есть как заставить BlocBuilder ничего не менять на UI если пришел не его STATE?\nВ коде сам вопрос выделен через ???.\nИли это вообще корявый путь, и нужно после разбора начального STREAM сформировать несколько по типам STREAM и уже через StreamBuilder обновлять данные в UI?"
]
Evgenii Elchev
condition параметр глянь у билдера
Evgenii Elchev
там можно сравнить прошлый и текуший стейты, решить надо ли делать ребилд
Константин Буланов
Спасибо большое Евгений. Главное задать направление куда копать.
tdesc
коряво использовать без стейт менеджмента стейты
tdesc
сильно запутывает и в итоге будет неподдерживаемо
tdesc
при наличии стейт менеджера блок будет просто стримить данные. как ему и положено
Nikita Domnitskii
[
{
"type": "code",
"text": "bloc: context.bloc ().whereType()"
},
" как вариант"
]
Evgenii Elchev
почему при наличии единого хранилища ты не используешь редакс?
tdesc
я не использую? )я очень даже использую но может вопрос не мне
Evgenii Elchev
тебе, вроде ты писал про то что у тебя блок за которым стоит единый стор
4??uzhoy .
[
"у меня так же через condition, не знаю даже как по другому делается \n",
{
"type": "code",
"text": " buildWhen: (LoginState previous, LoginState current) {\n if (current is LoginException) return true;\n if (current is Loading)\n return false;\n else\n return true;\n },"
},
""
]
4??uzhoy .
через блок делегат можно посмотреть возвращаемые стейты и уточнить для себя при каких не нужен ребилд
Evgenii Elchev
ну так и делается, но я вообще когда давно думал про декларативную верстку, ожидал что UI фрейворк сам будет это определять)
tdesc
единый стор да. который реализован стейтами в build_redux
Evgenii Elchev
вроде react с redux сами решают что перерисовывать, а что нет, без всяких этих кондишенов)
tdesc
условия в UI никуда не денутся
tdesc
можно единую модель сделать
tdesc
redux дает тебе изменение стейта
tdesc
сам факт. что ты с ним сделаешь up to you
Evgenii Elchev
ну apple нас на концеренции заверял что switUI достаточно умный, что бы просто сделал Text(store.substore.value) и он перерисовался только когда изменится value
4??uzhoy .
есть какой -нибудь бойлерплейт или ссылка ?
4??uzhoy .
я себе сейчас что то похожее хочу сделать но не совсем уверен как правильно, и сейчас скорее как тут, на схеме
tdesc
только меняем весь стейт виджета любого уровня вниз
tdesc
по факту отрисовки лишней тоже нет
tdesc
за счет рендер обжект
4??uzhoy .
правильно понимаю что в итоге допустим каждый блок сможет стукаться в общее состояние приложения и брать оттуда данные ?
Evgenii Elchev
зачем тогда кондишены?
4??uzhoy .
или я не о том думаю
Evgenii Elchev
я чет запутался в паралельных дискуссиях)
4??uzhoy .
прошу прощения??
tdesc
если по стейт менеджменту подписываешься на нужный стейт или набор стейтов собираешь нужную тебе модель и стримишь вниз в презентейшн по контексту. например баланс пользователя, его статус логина, статус вип привелегии. и все это в разных стейтах дерева хранится.
tdesc
презентейшн только рисует и все
tdesc
меняет условия в стейтах через выбрасывание actions
Evgenii Elchev
это не притензия)
tdesc
у каждого слоя своя ответственность
Evgenii Elchev
но это не единый стор и не редакс, или ты не про свою архитектуру?
4??uzhoy .
по такой схеме?
tdesc
редакс лишь один из вариантов стейт менеджмента. причем и подход и куча разных библиотек.
tdesc
главное это Unidirectional data flow принцип
tdesc
мне нравится редакс из-за максимальной простоты. проще для команды до 10 человек представить сложно
4??uzhoy .
я не сталкивался с редаксом, начал что то в своем понимании делать из блока и потом мне показалось, что это очень похоже на редакс, когда увидел подобную схему, в то время как в одной из статеек про блок говорят не используйте супер блок для нескольких экранов, думаю вот может я редакс хотел изначально хоть и не знал что это)
tdesc
редакс это и есть супер блок )
tdesc
там где у каждого своя зона ответственности
Игорь Кравченко
мне больше BLoC + Subject нравится, но вот масштабируемость(команды) пок под вопросом(нет практики), но redux - это не просто)
Evgenii Elchev
ну типо того. Редакс это больше ограничений. Один стор, один блок.
tdesc
single source of truth максимально просто для передачи знаний по проекту.
Evgenii Elchev
я пока в поиске идеальной UDF архитектуры)
Evgenii Elchev
нагрузка на память идет большая
tdesc
ну не больше чем при работе с любым иммютабл обьектом
Evgenii Elchev
я про егдиный стор, в котором все данных накопленные приложением харнятся
tdesc
в фиш насколько я понимаю мобх вариантах это не необходимость
tdesc
с ним нет никаких проблем
Sergey Hottabych
После последнего апдейта флаттера начались странные конфликты. Например, не могу подцепить path: Because every version of flutter_test from sdk depends on path 1.6.4 and greatplaces depends on path ^1.7.0, flutter_test from sdk is forbidden. So, because greatplaces depends on flutter_test any from sdk, version solving failed. pub get failed
tdesc
пакеты «забывают» обновлять зависимости
Игорь Кравченко
dependency_overrides: path: 1.7.0
Sergey Hottabych
и что с этим делать?
Evgenii Elchev
ну они занимают память)
Игорь Кравченко
override или форк)
tdesc
управлять стейтом тоже можно. сделать апи по персисту в бд/что-угодно
4??uzhoy .
это по идее единственный минус ? если так подумать
tdesc
редакс это архитектурный шаблон. у него как и у синглтона и фасада нет врагов
tdesc
как говорится дьявол кроется в деталях реализации
Evgenii Elchev
ну это уже не свосем редакс получается
Игорь Кравченко
+, кстати, генератор будут улучшать, а то построение моделей проекта в 3 минуты - жуть?)
tdesc
почему? редакс это стейт, чистая функция его изменяющая и экшн с данными
tdesc
можно представить что сеттеры/геттеры это редакс
tdesc
я попробую просто хранить по разным пакетам. сетевые модельки, доменные по фичам.
tdesc
когда их меньше 50 вообще летает ))
Igor Ganusovskij
не пойму. два проекта flutter+visual code+windows 10. Один проект без проблем стартует в web и отлаживается. Второй при попытке старта в web бодро рапортует Error connecting to the service protocol: connection to device ended too early и сваливается. Куда копать?
Sergey Hottabych
А форк как сделать?
Игорь Кравченко
находишь пакет, переходишь в исходники, форкаешь, меняешь, делаешь в проекте ссылку на гит
Sergey Hottabych
ну это здорово, но причину не объяснили почему такая ошибка, и как override или fork поможет
Nikita Domnitskii
[
{
"type": "code",
"text": "flutter_test"
},
" зависит от ",
{
"type": "code",
"text": "path: 1.6.4"
},
" твой апп от ",
{
"type": "code",
"text": "path: 1.7.0"
},
". Конфликт зависимостей, что тут объяснять?"
]
Sergey Hottabych
Что такое flutter_test? Я его не создавал
4??uzhoy .
[
{
"type": "code",
"text": "dev_dependencies:\n flutter_test:"
}
]
4??uzhoy .
есть такое в pubspec?
4??uzhoy .
ну значит создавал
Sergey Hottabych
мне он даже не нужен, я не собираюсь писать тесты
4??uzhoy .
ну тогда удали
Nikita Domnitskii
Ну так убери
Sergey Hottabych
А flutter_test ты никак не переделаешь? То есть, захочу писать тесты — нужно старый path юзать?
Sergey Hottabych
А override если сделать — не будет flutter_test работать?
Sergey Hottabych
Ну и ладно, нафиг он нужен У меня тут не энтерпрайз
Артем Терещук
Если мне нужно по нажатию на кнопку показать DraggableScrollableSheet с слайд анимацией и закрывать по свайпу вниз, правильно ли будет если я его помещу в showModalBottomSheet ? Или нужно через SlideTransition работать ? onPressed: (){ showModalBottomSheet( context: context, isScrollControlled: true, isDismissible: true, expand: false, backgroundColor: Colors.transparent, builder: (context) => DraggableScrollableSheet( initialChildSize: 0.64, minChildSize: 0.2, maxChildSize: 1, builder: (context, scrollController) { return Container( color: Colors.white, child: ListView.builder( controller: scrollController, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), ); }, itemCount: 20, ), ); }, ), ); }
Suo Mikoto
Всем привет, нужна помощь во флаттер можно открывать ссылки типа intent:// если да то что для этого нужно?
???????
[
{
"type": "link",
"text": "https://m.habr.com/ru/company/epam_systems/blog/461239/"
}
]
Davron Asrorov
Всем привет, есть тут кто работал с редактором zefyr?
Artem Osipov
[
{
"type": "link",
"text": "https://nometa.xyz/"
}
]
Kira
Всем привет! На udemy есть курс по dart, подскажите плз для полного новичка он подойдёт?
Socrat
бери от максимильяна
Igor
этот вроде есть в бесплатном доступе
Socrat
да поищи, анонсировали бесплатно
Sergey Hottabych
?, его же сейчас изучаю )
NewBalanceM5
[
{
"type": "bold",
"text": "Flutter"
},
" запустил бесплатный курс ",
{
"type": "bold",
"text": "\"Introduction to Flutter Development Bootcamp Using Dart\""
},
" , если активировать его в течение 3 месяцев, то он останется вам на все время. Курс рассчитан на 10+ часов.\nКурс: ",
{
"type": "link",
"text": "https://www.appbrewery.co/p/flutter-development-bootcamp-with-dart1"
},
"\nСтатья: ",
{
"type": "link",
"text": "https://medium.com/flutter/learn-flutter-for-free-c9bc3b898c4d"
},
""
]
NewBalanceM5
вот тут как раз бесплатный
Igor Kusoff
да, отличный курс!
Igor Kusoff
тоже хороший курс)
Igor Kusoff
но у Анжелы голос приятнее)))
Igor Kusoff
но вообще лучше оба посмотреть, кстати у Анжелы АС, а у Макса ВС код
Kira
Спасибо вам ребята, чтобы я без вас делала ?? Начну с Анджелы
Suo Mikoto
Всем привет еще раз. Мне нужно из моего webView запустить другое приложение. При клике в web view возврщается ссылка по типу intent://. Может кто-то сталкивался и знает как её можно обработать чтобы стартануло сторонее приложение?
Artem Osipov
тебе уже даже статью скинули
Suo Mikoto
Ок посмотрю ее еще раз
4??uzhoy .
Сталкивался кто ? билд успешный, при попытке установить дает это, гугл толком не дает инфу
4??uzhoy .
[
"попробовал через run -v показал это\n",
{
"type": "pre",
"text": "[ +161 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=******.host/.MainActivity (has extras)\n}\n Error type 3\n Error: Activity class {******.host/******.host.MainActivity} does not\n exist.\n[ +1 ms] Waiting for observatory port to be available...\n[+148359 ms] Exhausted heap space, trying to allocate 17179869200 bytes.",
"language": ""
},
""
]
4??uzhoy .
думаю попробовать почистить темпы и билды всякие но может была у кого такая беда
4??uzhoy .
[
{
"type": "code",
"text": "Activity class {******.host/******.host.MainActivity} does not exist"
},
". с этим конечно странности"
]
|