Программирование : Dart & Flutter по-русски
Evgeny Cherkasov
я начал делать "убийцу" firestore ) на акведуке
Rinat Kurmashev
кто какой http client использует? я взял flutter_retrofit, но там проблема в том, что парсинг json не в изолятах, что скажете про chopper?
???????
Весь провайдер вынести в изолят или попробывать поместить в изолят в мидлваре?
Павел
Пока попробовал Dio . Чем оно все лучше? Глянул, что в Дио пришлось заголовки вкручивать, что тут нет по-умолчанию . Дио после получания данных все равно в модели складывает fromJson
???????
retrofit для кодогенерации запросов
???????
он используется в паре с dio
Павел
Вот это и не понял. Кодогенерация это что?
Павел
консольно запустил и собрал дарт файлы?
???????
Тебе сами запросы писать не надо
???????
Просто объявляешь сами методы и всо
Павел
копну позже) а чопер этот?
???????
Мне он чем то не понравился именно в вебе
Павел
у них в реализации изоляты?
???????
Но уже не помню (мб и фиксанули)
???????
пользую dio + retrofit
Павел
я пока вынес в репозиторий + api_client файлы. Получил json и создал модель через fromJson. Не сильно много кода
???????
Все эт делается кодогенерацией
???????
сами запросы, сериализация/десериализация
Павел
а модели с методом fromJson тоже?
???????
Прост объявляешь методы/модель и проставляешь аннотации
Rinat Kurmashev
сам так и сделал?
???????
Не, для меня это не проблема, к тому же стараюсь все делать кроссплатформенно с вебом
Rinat Kurmashev
просто с бэка в паре запросов json прям жирнючие, что аж ui задумывается
Rinat Kurmashev
в остальных местах всё ок
Павел
изолят нужен на жирный json ?
???????
У тебя скорее всего не сам запрос блочит
Rinat Kurmashev
парсинг я так понимаю
???????
Попробуй в compute(jsonDecode()) вынести именно десериализацию
Rinat Kurmashev
да, попробую
???????
Тобишь получай строку/двоичные данные/поток и это дело уже в изолят разбирать
Rinat Kurmashev
пойду тебе лайк поставлю ??
???????
Ну или попробуй весь провайдер или в мидлваре запрос
???????
Сегодня запилю еще 1 кроссплатформенный капетик с простеньким функционалом.
Павел
и наличие сети пожалуйста, если правильно понял о чем пакет
Павел
да и тип сети не помешает)
Константин Буланов
Можно по подробнее плиз.
???????
Гляну есть ли в вебе к этому доступ
???????
Смысл именно в полной кроссплатформенности
Павел
пусть null позвращает)
Dmitriy Orteney
Погоди как из изолята десериализованные данные вытащишь х(
???????
Он должен мочь передать и сложный объект если через Compute
???????
и все типы что есть в JSON
Dmitriy Orteney
[
"Ну вот мапу только и можно вытащить, а раскладывать по своим моделькам уже в мейн изоляте. \n\nз. ы. Для дио есть ",
{
"type": "link",
"text": "https://github.com/flutterchina/dio_flutter_transformer"
},
", который заворачивает jsonDecode в compute"
]
???????
Ну раскладывать по моделькам уже не так напряжно
???????
Но в Compute ты также должен мочь получить сложный объект, вроде как
???????
Но на слово не верь - попробуй
?? Alex B
Спасибо! Кажется, помогло. Ошибки пропали, осталась одна, связанная с постбилд скриптом, вечером поковыряю.
Rinat Kurmashev
ну если я ретрофит использую это туда придется гвоздями забивать
Павел
Through practical experience, we find that although using compute can make tasks go on in the background, it may lead to slow task execution. So please think carefully before using it.
Dmitriy Orteney
еще раз - ретрофит обертка над дио х(
???????
РЕТРОФИТ ИСПОЛЬЗУЕТСЯ В ПАРЕ С DIO
Павел
запуск изолята и возврат данных много жрет накладных расходов?
???????
Ты можешь его запустить и не закрывать если это надо +- постоянно
Павел
то есть короткая десериализация может быть быстрее чем изолят получается
???????
Да, небольших яб не стал пускать, смысла какт не особо
???????
+ придется попыхтеть дополнительно, если расчитывать будешь и на веб
Павел
пока не понимаю смысла веба. ну взял кодовую базу и скомпилил под веб. И что получил? SPA ?
Dmitriy Orteney
Смысл не в скорости, а чтобы не блокировать отрисовку кадров х) Для любых запросов compute будет накладнее)
???????
Сча PWA из коробки регистрируется
Павел
накладнее на микросекунду?
Павел
Читал в целом достаточно async/await
???????
А в чом смысл то, чото реализовывать, да еще и в ущерб себе?)
???????
Если у вас там ёба данные, попробуйте поговорить с бэкэндерами и перейти на gRPC
Sergey Salnikov
[
{
"type": "link",
"text": "https://pub.dev/packages/graphql"
},
"\n\nно я не мигрировал на 3.0"
]
admin
Всем привет, подскажите где можно найти flutter разработчик, задача сделать анимацию иконки на стартовом экране приложения
DK
[
{
"type": "link",
"text": "https://t.me/dartlang_jobs"
}
]
Денис
Народ, опять я не могу в стримы) у меня есть 2 стрима(FirebaseUser и snapshots данных пользователя). У меня есть UserBloc в котором все варианты юзера. Я хотел бы чтобы мой UserBloc зависил сразу от двух этих стримов. Как это сделать правильно?
Денис
Укажите направление хотя бы)
Evgenii Elchev
Посмотри в Rx там есть combineLast
Evgenii Elchev
Но вообще не очень понятна задача
Денис
в фаирбейс текущий юзер кидается в стрим onAuthStateChanged. Плюс у меня есть данные каждого юзера в firestore. От этих данных зависит какой вид будет у приложения(просто юзер, про юзер, компания и тп). Я сделал блок в котором Есть UserSigned UserPro и тд. и хочу чтобы у меня в этом блоке всегда были свежие данные.
???????
Тебе сказали: ты хочешь объединять стримы и генерировать из них эвенты для БЛоК'а
???????
Объединяй одним из множества способов и генерируй эвент
???????
ZipStream CombineLattest и так далее
???????
Тыщу разных способов с разным результатом
Денис
понял) просто не мог понять как погуглить правильно - "stream merge" . вторые сутки на кофе без сна) Спасибо за ответы
???????
[
"И потом ",
{
"type": "code",
"text": ".map(data2event).forEach(myBloc.add)"
},
" на результирующем стриме"
]
Денис
а могу ли я объеденненый стрим просто yield* в userBloc? или не стоит?
???????
Не стоит. У блока всего 1 интерфейс на вход и 1 интерфейс на выход
???????
И это логично жеж донельзя. Сменился пользователь и его данные?
???????
Событие должно породить какието состояния
Денис
окей понял. логично) спасибо
???????
Ультра логично делать именно через bloc.add
???????
Но опять же, смотря откуда это прилетает и в какой момент
???????
Вот это если это произошло на стороне интерфейса
???????
Ну хотя со стороны бизнес логики, наверн, можно тоже bloc.add дернуть
Yerassyl Maikhanov
насколько хороша математика в dart
Yerassyl Maikhanov
ну что бы что то сложное считать
Yerassyl Maikhanov
например квадрат числа 0.03924361 точно посчитает?
???????
[
"dart:math\n\n",
{
"type": "link",
"text": "dartpad.dev"
},
"\n\nprint(...)"
]
Sergey Hottabych
В VS Code, когда наводишь курсор на любое слово, видишь подсказку. Например, когда наводишь на builder, видишь, что он принимает context. Есть ли в Android Studio такой функционал? Навожу курсор, ничего не происходит.
admin
ctrl и навести, тоже не работает ?
Yerassyl Maikhanov
В студии есть дебагер
admin
вообще есть ещё ctrl + shift + space
Yerassyl Maikhanov
и когда наводишь он показывает
admin
но он у меня не работает в дарте почему-то
admin
аа, в Android Studio)
admin
когда курсор в скобках где аргументы
Yerassyl Maikhanov
alt + 5
Yerassyl Maikhanov
и открывается дебагер
Yerassyl Maikhanov
где можно что угодно писать
Yerassyl Maikhanov
и там все показано
Yerassyl Maikhanov
еще для быстрых проверок есть alt+F8
Sergey Hottabych
да, Ctrl+курсор дает подсказку
?
Можно как-то сделать обводку для Icon?
Yerassyl Maikhanov
тип только границы иконки?
?
Что бы например у стрелочки была обводка
Nikita Domnitskii
У тестов есть какой-нибудь общий энтрипоинт?
???????
Он начинается также с main
???????
А прям строгово наименования файлов нет
???????
Если хочешь удобно сгруппировать, могу показать как делаю это я
???????
[
{
"type": "link",
"text": "https://github.com/PlugFox/plugfox_transformers/blob/master/test/plugfox_transformers_test.dart"
}
]
???????
Создаешь 1 файл, в нем таким образом импортируешь другие и расписываешь как группы
Nikita Domnitskii
1 файл - 1 группа?
Nikita Domnitskii
Вроде то что нужно, спасибо
???????
Ну в основном main и пишешь все эти группы
???????
Просто здесь у меня пока 1 логическая единица, потому и 1 группа)
Nikita Domnitskii
Ну я про это, да
???????
Появятся еще, добавлю еще групп по соседству)
???????
И они будут дергать свои файлики
???????
И таким образом, обойдут все тесты
???????
в сосноле будет понятно выводится, что там и как завершилось
Денис
возникла проблема, у меня второй стрим зависит от первого, так как от uid пользователя зависит из какого документа брать данные пользователя. И я опять в тупике(
Nikita Domnitskii
[
{
"type": "mention",
"text": "@PlugFox"
},
" тесты вызываешь как ",
{
"type": "code",
"text": "dart test/plugfox_transformers_test.dart"
},
"?"
]
???????
в vs code кнопочку дебага тыкаю)
???????
А так, тип того, да
Nikolay Plotnikov
помогите плиз, почему могли отклонить мое приложение... я не понимаю какие возрастные ограничения я должен указать..
???????
Судя из сообщения - 3+
Davron Asrorov
Привет, такой вопрос, сталкивался кто с проблемой отсутствия пробелов в названии приложения IOS , причем проблема именно если писать его кириллицей
Davron Asrorov
Спец символы не помогают тоже
Pavel Vasilenko
Всем привет, кто может поделиться опытом интегрирования эквайринга во флаттере? Интересует хоть что-нибудь, связанное с интеграцией Яндекс.Кассы и т.п
Nikolay Plotnikov
то есть нужно убрать До 5 лет или что?
Nikolay Plotnikov
они написали, хрен поймешь
???????
там, вроде, какойто тест можно пройти и отвечая на вопросы подбирается группа
Nikolay Plotnikov
ну да, они проставил
Nikolay Plotnikov
стоит же для детей, как не соответствует
Nikolay Plotnikov
хрен пойми
Nikolay Plotnikov
я думаю наоборот нужно убрать 18+ можте
???????
На английский консоль попробуй переключить
???????
мб там понятнее будет
Nikolay Plotnikov
думаю дело в том что я наотмечал слишком много групп
Sergey Hottabych
А там вообще не предусмотрено в настройках, чтобы все хоткеи разом сменить на схему как в VS? Очень неудобная раскладка
Serge Shkurko
с этой же проблемой сталкивался
Davron Asrorov
12 символов лимит оказывается
Davron Asrorov
если больше, хочешь не хочешь склеивает слова
Serge Shkurko
у меня у одного из приложений 19 с пробелами
Davron Asrorov
как решали?
Serge Shkurko
[
"в info.plist замени аналогичные строчки\n",
{
"type": "pre",
"text": " CFBundleDisplayName\n что-то свое",
"language": ""
},
"\nна\n",
{
"type": "pre",
"text": " CFBundleDisplayName\n $(display_name)",
"language": ""
},
"\n\nво всех файлах *.xcconfig (лежат в ios/Runner)\nдобавь в конце строку\n\n",
{
"type": "pre",
"text": "display_name = Пресса?Премиум?ДОМ.РФ",
"language": ""
},
"\nименно с этими неразрывными пробелами между словами названия\nтолько не через xcode, через другую программу, например vscode"
]
Serge Shkurko
ну или так можешь попробовать, у меня просто несколько flavors
Alexander S.
Привет! такой вопрос, насколько нормально Bloc отправлять ивенты самому себе?
Aleksey
Мне тоже это интересно. Если возникает такая необходимость, то что делать? Может вынести общий для двух ивентов функционал в функцию и просто ее вызывать когда нужно отправить ивент самому себе в блоке
Roman Vasiliev
Я для повтора ивента так делаю, правда mapEventToState вызываю, а не dispatch/add
???????
Довольно странно както Но, по идее, почемуб и да, подводных камней быть не должно
Alexander S.
не видел кстати никто в опенсорсе приложения на bloc архитектуре посложнее чем прогноз погоды?
???????
В дискорде есть отдельный канал с шоукейзом
Alexander S.
спасибо, посмотрю
???????
[
{
"type": "link",
"text": "https://github.com/excogitatr/rick-and-morty-info"
}
]
???????
[
{
"type": "link",
"text": "https://github.com/hamaluik/timecop"
}
]
Sergey Mochalov
[
"вопрос нуба\nмне обязательно тащить Android Studio после установки Flutter SDK?\nа то ",
{
"type": "code",
"text": "flutter doctor"
},
" ругается что нету..."
]
Andrey P
только андроид сдк нужен будет
Sergey Mochalov
ок а из продуктов JetBrain че подойдет
Sergey Mochalov
чтоб кодить
Roman Vasiliev
Android Studio
Sergey Mochalov
WebStorm?
Roman Vasiliev
Intellij IDEA
Sergey Mochalov
ок, ща тогда попробую доставить че эт доктор просит
Roman Vasiliev
Так если не нужно, то зачем
Nikolay Plotnikov
помогите плиз понять
Nikolay Plotnikov
я пытаюсь сбилдеть HelloWord на mac os
Nikolay Plotnikov
вроде все сделал, но мой домен не нравится
Vasily Popov
Так он у тебя на айфоне пытается запуститься
FatShibe
у меня со страйпом все очень плохо было
FatShibe
вплоть до того, что приходилось открывать хтмлку с их жсом
Dmitry Sakhnov
Всем привет!Помогите пожалуйста с настройках флуттера
Dmitry Sakhnov
Я сделал все как на сайте у них написано
Dmitry Sakhnov
Сделал отдельную папку в диске C
Dmitry Sakhnov
src(flutter)
Dmitry Sakhnov
Туда разархивировал версию флуттера
Dmitry Sakhnov
Добавил через свойства,туда path
Dmitry Sakhnov
Прописав полной путь к папке flutter
Dmitry Sakhnov
C:\src(flutter)\flutter\bin
Dmitry Sakhnov
После чего в папке flutter запустил cmd
Dmitry Sakhnov
Прописал flutter doctor,и командная строка показала,что такой команды нет
Dmitry Sakhnov
В чем проблема?
???????
1) flutter - флаттер
???????
path переменная окружения
Dmitry Sakhnov
я зашёл в проводник,нажал на свойства этот компьютер
Dmitry Sakhnov
После чего дополнительные параметры системы
|