Программирование : Dart & Flutter по-русски
Alexandr Drobyshev
то есть кеширует в файлы типа куда то?
Kit Khilobok
Если собирать без метала, то лагов нет(меньше)
Alexandr Drobyshev
плохо если первый апуск лагает) это ж отпугнет юзеров
Alexandr Drobyshev
а что такое метал?
Kit Khilobok
Эпловский фреймворк для рендера
Alexandr Drobyshev
сложно все)) он по умолчанию вклчюен?
Alexandr Drobyshev
хм, спасибо, надо будет погуглить на эту тему
Kit Khilobok
Поэтому есть 2 выхода 1. "прогревать" 2. соберать без метала
Alexandr Drobyshev
прогревать?
Alexandr Drobyshev
я как то паял себе автозапуск в машину, сюда тоже надо? ??
Alexandr Drobyshev
шейдеры готовит когда? ток во время работы анимации? или можно просто сплеш скрин показывать?
Alexandr Drobyshev
у меня блин сразу там экран этот, типа три кратинки листаешь с векторной графикой и текстами, описание прилы, интеренсо тоже лагать будет листание
Kit Khilobok
Когда первый раз до какой-то анимации доходишь
Kit Khilobok
Если я не ошибаюсь
Alexandr Drobyshev
ясно, спасибо
Sergey Shobin
Если грубо и коротко, то как работает прогрев: билдишь с определенной командой (пока так), тыкаешь анимации чтобы отработали, стопишь прилу. На выходе у тебя json файл, при прод сборке тоже билдишь через другую команду, указывая этот файлик json
Alexandr Drobyshev
аа, спасибо) надо будет не забыть про это)
Sergey Shobin
Ну и если апдейтнешь версию флаттера, нужно будет перезаписывать на ней
Sergey Shobin
Так как на IOS юзается метал, а прогрев есть только для OpenGL, то нужен кастомный флаттер, на котором отключена металл поддержка
Sergey Shobin
Могу ссылку кинуть, если интересно)
Alexandr Drobyshev
кинь) мне до релиза пока далеко) не меньше месяца думаю))
Alexandr Drobyshev
но думаю млао что изменится
Sergey Shobin
[
{
"type": "link",
"text": "https://github.com/acoutts/flutter-engines-no-metal"
}
]
Vyacheslav
Всем привет! Подскажите, у меня есть аккаунт разработчика Apple, но у него закончился оплаченный период около 4 лет назад. Допустим, заказчику нужен вариант приложения iOS. Смогу ли я вести разработку c не оплаченным аккаунтом, и передавать для тестирования результат? В каком виде? Буду благодарен за любые советы, как правильно организовать работу с заказчиком в таком варианте. Спасибо!
Пашка
тестировать сможете на всем чем захотите, все что сможете подключить к своей машине
Пашка
ну я имею ввиду iOS девайсы
Пашка
но есть ограничений
Пашка
их только с аккаунтом оплаченным
Vyacheslav
а как передавать заказчику результат? или он должен будет сам делать сборку на своем компе?
Пашка
тут только сборка на его устройство путём подключения к xcode
Vyacheslav
да, это и хотел понять, спасибо!
Silent Bezmolvny
[
{
"type": "link",
"text": "https://flutlab.io/"
},
"\n\nСмотрите чё нашел"
]
Silent Bezmolvny
Но надо зарегаться, чтобы запустить эмулятор
?????????? | (• ?•)| (????)
Можно через test flight, но нужен акк разработчика оплаченный
Vyacheslav
ого что за зверь))
Валерий
А чё firebase app distribution отменили уже для выкладки билдов в тест?
MMM Stefan
ребятки, у когото есть плагин для far manager, для нормальной подсветки синтаксиса дарта?
Danila Manila
Привет) Юзал кто math_expressions?
Mitai
Прикольно, он позволяет запускать как эмулятор андройда так и огрызка?
MMM Stefan
[
"не юзал, есть еще ",
{
"type": "link",
"text": "https://github.com/OndrejKunc/flutter_dynamic_forms/tree/master/packages/expression_language"
},
""
]
Vyacheslav
это на мой вопрос?
Andrew Shalaev
[
{
"type": "code",
"text": "Figma to Flutter Converter"
},
" - это интересно..."
]
Пашка
[
{
"type": "mention",
"text": "@bunopus"
}
]
Vyacheslav
С iOs тоже работает?
Eldar
Ребя, есть 3 экрана А,Б,В слушающие разные Блоки. Есть экран комменты - на него можно перейти с тех 3-х экранов. Комменты берутся из моделей с экранов АБВ. То есть экран комменты должен уметь слушать все три Блока экранов АБВ. Как сделать эту дичь ?
Дмитрий Щербаков
Вынести комменты в отдельный блок
Eldar
вынести то я их вынес. вот нужно уметь обновлять сстраницы АБВ после добавления коммента
Дмитрий Щербаков
Ну так сделай блокбилдер
Дмитрий Щербаков
И обновляй
Дмитрий Щербаков
Все комменты можно хранить в 1 таблице, где ключами будут id коммента и id сущности которую комментируют
Eldar
больше всего меня смущает как обновить список комментов после добавления нового.
Дмитрий Щербаков
При написании коммента вызывай евент
Eldar
по сути 1. добавился коммент 2. пошла перезагрузка родительского объекта Товар. 3. Из модели берем обновленный массив комментов.
Дмитрий Щербаков
Я бы не пихал комменты в модель товаа
Дмитрий Щербаков
Это разные сущности
Дмитрий Щербаков
Написали коммент - добавил запись в бд, вызывал евент блока
Дмитрий Щербаков
Слушатели обновили данные
Eldar
Не она просто Джоинится на беке перед отдачей
Eldar
BlocBuilder ( ... if (state is .... || state is ... || state is ..) then return ListView
Дмитрий Щербаков
Косяк в архитектуре что нужно перезагружать модель товара из за коммента)
Eldar
вот так хочу написать на странице комментов
Дмитрий Щербаков
Вынести комменты в отдельную сущность (модель)
Дмитрий Щербаков
И слушать их передавая параметром ид того что комментируют
Eldar
сделать отдельный Ендпоинт на беке ?
Дмитрий Щербаков
Я бы сделал так
Дмитрий Щербаков
Комментить же могут откуда угодно
Дмитрий Щербаков
И ради этого перезаписывать каждый раз модель товаа не гуд
Eldar
Вы только про это ? На беке в базе Комменты лежат отдельно, они просто джоинятся через связь
Дмитрий Щербаков
Потом например захочется иерархию добавить (ответ на коммент и т п )
Дмитрий Щербаков
Лучше все равно их отдельно тащить
Дмитрий Щербаков
Посмотри крупные интернет магазины
Дмитрий Щербаков
За 1й вызов там тянут 3-5 комментов,
Дмитрий Щербаков
Потом подгружаются они по мере скролла
Александр
Ребята, я когда по вкладкам перемещаюсь, FutureBuilder все время срабатывает и перестраивает дерево, получаются скачки интерфейса. как это дело закешировать или как то так?
Кирилл Жуковский
Ой Не слушай, я перепутал, подумал, что в чате по реакту спрашивают, сорян)
Makhmud Ushamiev
видать ты начинаешь строить виджет в момент тапа по табу. как вариант вынести загрузку future'a за пределы ui, менеджить стейт таба, и во время таба тянуть последний стейт
Amigo 177
Ребят объясните что за класс offset? Читал док ну никак нихера не понял. Ибо нету примеров.
?????????? | (• ?•)| (????)
заработался)
Andrey
[
"как собрать apk с ",
{
"type": "code",
"text": "no sound null safety"
},
"?"
]
Пашка
вот тоже самое тока в гугл
Александр
че то все равно подмигивает интерфейс
Makhmud Ushamiev
ну вот, ты при инициализации стейта начинаешь фетчить дату
Александр
а как по другому, он то все равно должен получить данные
Makhmud Ushamiev
а надо чтобы дата фетчилась в репозитории, полученные данные хранились в бизнеслогическом компоненте (к примеру в блоке), и отрисовывать уже исходя из данных блока. Есть данные - рендерь виджет, нет данных - тяни с репозитория, как вытянул - рендери
Александр
спасибо, поколдую
Eldar
вобщем я решил передавать массив комментов на экран, и копировать их в локальный _comments. При отправке коммента, добавляю его в локальный _comments + уведомляю через CommentsCubit всех заинтересованных слушателей об ивенте. Как-то так. То есть добавление коммента делаю чисто локально. обновление родительских моделей через событие. Как-то так.
Anton I
Приветствую! Подскажите пожалуйста, какой граммотный и наиболее оптимальный способ хэндлить тапы от gestureDetector виджета в рутовом виджете? к примеру как от отдельного виджета зеленой карточки оповестить рутовый виджет(экран) о нажатии?(см. картинку)
Anton I
пробовал прокидывать Function, но чет эксепшен кидает
Anton I
[
{
"type": "pre",
"text": "The following NoSuchMethodError was thrown while handling a gesture:\nThe method 'call' was called on null.\nReceiver: null\nTried calling: call()",
"language": ""
}
]
Anton I
Я сам разработчик нативных приложений iOS, и обычно это делается через делегаты(в нативе иоса)
Eldar
Опана, родной! Неужели я тут не один !!!! (Шутка юмора)
Gorohov Valeriy
Тут нужно следить за null, в отличии от swift)
Anton I
Каво Я не хвастовства ради это написал, а поведал о знакомом мне паттерне Или я твою шутку-минутку не понял?
Anton I
Понял, спасибо за идею Хотя этот параметр я передаю
Eldar
Тоже скучаю по протоколам-делегатам. Тут их нету
Gorohov Valeriy
Почему? Протоколы и делегаты - это не особенность языка или платформы. Никто не мешает реализовывать их в dart
Anton I
[
"Разве?\n\n",
{
"type": "link",
"text": "https://medium.com/better-programming/how-to-implement-the-delegation-design-pattern-in-dart-d782de77c886"
},
""
]
Олжас Сулеймен
если кто не знал, все функции имеют метод call, так что можно писать function?.call(...)
Олжас Сулеймен
и этот метод можно добавить классу
Ivan
[
"Всем привет с наступающим!, кто может подсказать жизненный цикл приложения когда мы получаем push (приложение в оффлайне), обрабатываем здесь ",
{
"type": "code",
"text": "firebaseMessaging.configure"
},
" ",
{
"type": "code",
"text": "onBackgroundMessage"
},
",\n\nвызывается ли main? и т.д. запустить бекграуд сервисы"
]
DVS (Read The F.ng Manual) Studio (NoHello)
запускается нативная часть, которая принимает пуш смотрит что зарегистрирован дарт-обработчик пинает нативный Application (или что там настраивается см ридми пакета) этот натив уже запускает дарт-машину а в ней НЕ main(). а ту функцию которую запихали в этот конфиг. соответственно, чтобы работали другие плагины связанные с нативом, надо лезть в натив и регистрировать их ручками после инициализации пуш-сервиса, а потом запускать их в дарте учитывая что путь от начала main не был пройден и их еще инитить надо. как то так) примерно это и описано в ридми)
Eldar
Разве onBackgroundMessage работает щас ?
Ulugbek Usmanov
В FLOOR onDelete: ForeignKeyAction.cascade не работает кто работал с FLOOR
Eldar
на какой версии? у меня краш ловит. version: "7.0.3"
Eldar
на Айосе имею в виду
Vyacheslav Tilo
Привет, нужно приложение под android и iOs очень простое, примерное описание и ТЗ в личку дам.
Vyacheslav Tilo
для личного пользования
Socrat
[
"тебе сюда ",
{
"type": "mention",
"text": "@dartlang_jobs"
},
""
]
Ivan
работаю правда на 12.4.9, надо на 14.2 проверить
Ivan
а да , на ios через натив PushKit??
Andrei Abramenko
[
"А ещe есть в Dart есть IIFE ",
{
"type": "link",
"text": "https://medium.com/dartlang/3-cool-dart-patterns-6d8d9d3d8fb8"
},
""
]
Tolegen Akilbekov
Ребят, вопрос. У меня есть список из listTileCheckZBox, по отдельности чекбокс выделить можно, а как сделать так чтобы можно было также выделелить все
Олжас Сулеймен
можно коротко, medium заблочен
Andrei Abramenko
[
{
"type": "link",
"text": "https://en.m.wikipedia.org/wiki/Immediately_invoked_function_expression"
}
]
Николай
Подскажите пожалуйста, добавил Firebase Cloud Messaging для пушей и теперь приложение под ios загружается с белым экраном и не отвечает, на эмуляторе нормально загружается, на Андроиде тоже без проблем и пуши приходят. А под Ios никак не хочет.
Oleg
Белый экран - это краш по идее. На iOS эмуляторе нет пушей
Ivan
Через хкод попробуй открыть, там должна быть ошибка детальнее
Николай
я в курсе, я имел ввиду что, приложение запускается
Николай
у меня нет соединения с маком, он удаленно находится.
Yaroslav
Привет всем. Кто сталкивался с таким: column никак не реагирует на crossAxisAlignment
Yaroslav
Элементы всегда слева
Yaroslav
Приходится в row оборачивать, чтоб в центр их сместить
Savva Morozov
в inspector`е смотрели?
Дима
может быть что к нему применяются настройки того во что он вложен
Yaroslav
Насколько я понимаю, скаффолд и билдер их сбить не могут
Дима
[
"а есть у дарта директивы препроцессора?\nтипа как у c#:\n\n",
{
"type": "pre",
"text": " #if DEBUG\n\n//тут мне нужно \"пасхалку\" спрятать чтобы когда дебаг облегчить себе жизнь, но чтобы в релизе оно не работало потом\n\n#endif",
"language": ""
},
""
]
Пашка
гляньте flutter environments
Олжас Сулеймен
if (const bool.fromEnv()), tree shaking отсеет потом
Алексей Александрович
[
"Я тут обнаружил, что в Dart нет union types, нельзя сделать ",
{
"type": "code",
"text": "List "
},
"\nпечаль моя велика"
]
Олжас Сулеймен
зато код яснее (лично мне)
Олжас Сулеймен
можно еще в assert заворачивать, отсеет точно
Andreu
в одном из популярный пакетов все равно есть Tuple2 и тд.
Дима
[
"кортежи есть\n",
{
"type": "link",
"text": "https://pub.dev/packages/tuple"
},
""
]
Олжас Сулеймен
вот бы они были нативные и с распаковкой как в жс или питоне, если даже в го есть похожее
Алексей Александрович
Ага, спасибо
Yaroslav
Импортни foundation, там булевое свойство есть kIsRelease или как-то похоже
Дима
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/foundation/kReleaseMode-constant.html"
},
"\n\nспасибо! самый \"красивый\" вариант получается"
]
tdesc
кто потом подобный код поддерживает?
tdesc
наверное гдето юнионы и нужны, но где это вопрос
Алексей Александрович
Поясню логику У меня есть две модельки, которые я сгенерил из ответов апишки (автоматически, можно считать) Модельки практически одинаковые У меня есть два виджета с одинаковой таблицей под эти две модельки. Меня напрягает, что единственное значимое различие между этими двумя виджетами - тип модельки, который она принимает
Алексей Александрович
Хотелось бы сделать union, чтобы не юзать dynamic
????????????????????????
Посоветуйте хороший туториал по Redux, желательно на русском.
Viktor S
[
"есть either ",
{
"type": "link",
"text": "https://pub.dev/packages/dartz"
},
""
]
Макс Провоторов
Так. У тебя есть две модели, которые практические одинаковые. Для этих моделей у тебя есть виджет, который принимает одну из этих двух моделей. И чтобы не создавать два дублирующего виджета ты хочешь union взять?
Алексей Александрович
да, именно
Макс Провоторов
Так можно и без этого. Использовать генерики или на крайняк интерфейс можно захардкодить
Макс Провоторов
MyData.getValue
Макс Провоторов
Или что-то подобное
Макс Провоторов
Это если я правильно тебя понял
Андрей Козак
или через наследование + generic
Андрей Козак
union типы только в тайпскрипте видел, но это последствия “фейковой” типизации
Андрей Козак
в полноценном ООП они не нужны
Макс Провоторов
Просто нужно понять что тебе нужно
Макс Провоторов
Либо захардкодить, а если у тебя таких моделек может быть больше от сервака
Макс Провоторов
то можно в базовый тип выделить
Max
Юнион-типы это огромное удобство, разумеется, и реализовано в большинстве "классических" ООП-языков. В Дарте его нет, потому что реализация очень громоздкая. Есть надежда, что они станут следующей большой фичей языка после Non-nullable
Андрей Козак
чот ни в .net ни в java не помню
Андрей Козак
да и смысла не понимаю, можно либо через generic либо через базовый класс. Все равно внутри виджета проверять настоящий тип, и по нему рулить
Vadim Lukichev
Единственный одинокий union в dart - FutureOr
Comrade77
Да и вообще где они очень удобны?
Макс Провоторов
Или можно все к стрингу преобразовать Если у него различие данных это int и string
Андрей Козак
в TS без них не прожить. в жоэс стайле норм, когда функция может возвращать или принимать разные типы. Ну и чтобы в TS такое использовать - нужны юнионы
Андрей Козак
а так хз, больше нигде не видел. в сильно типизированных языках это фигня без задач имхо
Comrade77
ts надстройка над js, который является мультипарадгменным языком с осутствием классов в понятии ООП. Поэтому возможно там без этого никак
Max
Union в с++, Sealed Type в Kotlin
Андрей Козак
в плюсах юнион же просто память пересекает, не?
Vyacheslav Egorov
Тут явно путаница между tagged unions (которые еще известны как sum types) и union types. Union types в Dart скорее всего не будет (слишком много головной боли от них и мало пользы) , а вот tagged unions скорее всего будут в каком-то виде
Prunkles
А если делать вложенные Scaffold-ы, то их AppBar-ы будут видны вместе, и вообще так лучше не делать?
Alexandr Drobyshev
а файлы генерируемый фризед и жсон исключать из гита?
vasilich
Есть на эту тему холивар извечный)
vasilich
Но вроде как генерируемый код лучше не включать.
Alexandr Drobyshev
о, супер, у меня вот с самим собой холивар на эту тему
Alexandr Drobyshev
так вот и я о том, это с одной стороны
Alexandr Drobyshev
а с другой, это файлы с которыми можно собрать и после скачки ошибок не будет)) хз тут
Андрей Козак
всегда генерируемый код включается) вы чо
Alexandr Drobyshev
[
"но смысл тогда автогенератора, можно тогда юзать сторонний\n",
{
"type": "link",
"text": "https://app.quicktype.io/"
},
""
]
Андрей Козак
это обычный код, который самому лень писать
vasilich
Я ж говорил - холиварная тема)
Alexandr Drobyshev
точно, если я пишу на TS то я включаю скомпиленый js в гит? не думаю) даже по дефолту везде исключены файлы js
vasilich
[
{
"type": "link",
"text": "https://pub.dev/packages/build_runner#source-control"
}
]
Alexandr Drobyshev
оч спорный вопрос для меня)
Андрей Козак
да эт другое - это транспайлинг
Андрей Козак
а в дарт кодогенерация для ускорения однотипных действий
vasilich
«Код который лень писать самому»
Alexandr Drobyshev
ок, то есть в андриоде вот я кодил, взять тот е ретрофит, ну не включались файлы тоже по дефолту в гит
Alexandr Drobyshev
не, ну там чтуь другой)) там же TS. не то что лень именно, а основа это введение типов )
|