Программирование : Dart & Flutter по-русски
Sergey Lavinov
Я говорю про релиз
Александр Котков
в релизе не аот
Sergey Lavinov
А что тогда? Ahead Of Time, предскомпилированный код
Sergey Lavinov
В дебаге JIT
Sergey Lavinov
Или я поехал?
Александр Котков
jit на андроиде
Александр Котков
про аот ошибся
Александр Котков
Как Flutter запускает мой код на Android? Код C и C ++ движка скомпилирован с помощью Android NDK. Код Dart (как SDK, так и ваш) заблаговременно (AOT) скомпилирован в нативные библиотеки, библиотеки ARM и x86. Эти библиотеки включены в Android-проект «бегущий», и все это встроено в APK. При запуске приложение загружает библиотеку Flutter. Любой рендеринг, ввод или обработка событий и т. Д. Делегируются скомпилированному Flutter и коду приложения. Это похоже на работу многих игровых движков. Сборки режима отладки используют виртуальную машину (ВМ) для запуска кода Dart (отсюда и баннер «отладки», который они показывают, чтобы напомнить людям, что они немного медленнее), чтобы включить горячую перезагрузку с сохранением состояния. Как Flutter запускает мой код на iOS? Код C и C ++ движка скомпилирован с LLVM. Код Dart (как SDK, так и ваш) заблаговременно (AOT) скомпилирован в собственную библиотеку ARM. Эта библиотека включена в iOS-проект «бегуна», и все это встроено в .ipa. При запуске приложение загружает библиотеку Flutter. Любой рендеринг, ввод или обработка событий и т. Д. Делегируются скомпилированному Flutter и коду приложения. Это похоже на работу многих игровых движков. Сборки режима отладки используют виртуальную машину (ВМ) для запуска кода Dart (отсюда и баннер «отладки», который они показывают, чтобы напомнить людям, что они немного медленнее), чтобы включить горячую перезагрузку с сохранением состояния.
Александр Котков
блин где-то была статья нормальная
Александр Котков
я наверное все напутал)
Sergey Lavinov
Окей, из-под IOS в дебуге запускается VM а не JIT, в остальном вроде все ок)
Александр Котков
но реднеринг идёт в плюсах через skia
Александр Котков
а на айос это llvm
Александр Котков
[
"вот тут есть немного ",
{
"type": "link",
"text": "https://flutter.dev/docs/resources/faq"
},
""
]
Sergey Lavinov
Читал фак, только не сильно понятно, как это относится к трабле с потерей кадров на загруженных экранах на слабых девайсах а-ля пятерка
Sergey Lavinov
Про AOT вообще было к примеру сказано)
Александр Котков
у них там есть ишью по поводу произволительности, в движке так что ждём когда все оптимизируют)
tdesc
чем ваш девайс загружен?
Александр Котков
если анимируешь картинки попробуй RepeatBoundery виджет, как раз для поднятия профита
Sergey Lavinov
*Repaint... Вроде, типа ограничивает перерисовку, уже юзаю местами
Александр Котков
Тени есть?
Sergey Lavinov
Длинный экран, с переодической переотрисовкой отдельных элементов и большой flare анимацией
Александр Котков
где-то была ишью поповду инк вела и теней что там лишняяя перерисовка вызывается
tdesc
так оптимизируйте фларе
Александр Котков
flare кэширован?
Sergey Lavinov
Конкретно тут нет. Знаю, что тени, клипы и опасити ведут с книжению перфоманса
Sergey Lavinov
Это все в доке есть)
tdesc
вообщем не выдумывайте проблемы
Sergey Lavinov
Чуть подробнее?
Sergey Lavinov
Там одна анимация из ассета. Зачем кэш?
Александр Котков
Я сегодян смотрел пример гуглов с игрой и они там свою рендер делают flare хотя казалось бы можно просто через actor запустить анимацию
Sergey Lavinov
Да выдумывать особо нечего. Обещан уровень производительности, при котором написать неоптимальный код сложно (почти цитата из доки). По факту же постоянно приходится об этом думать. Думать, конечно, хорошо, но не каждый же чих)
Sergey Lavinov
Это The History Of Everything?
Александр Котков
[
{
"type": "link",
"text": "https://medium.com/2dimensions/flutter-developer-quest-game-at-google-i-o-2019-53971a56a524"
}
]
tdesc
несоответствие ваших ожиданий от плохого знания английского
Sergey Lavinov
Спасибо, посмотрю вечерком
Александр Котков
вот посмотри как там с flare работают мб поможет
Александр Котков
кстати, а что говорит профайлер?
tdesc
up to 60fps и up to 120fps никак не говорит что плевать какой код и все будет всегда с такой скоростью рендерится
Sergey Lavinov
На пятерке еще не запускал его, в ближайших тасках
Александр Котков
я к тому что мб это не гпу, а проц слабый
Sergey Lavinov
К слову, некоторые примеры от самого гугла кадров не чувствуют. В том же Flutter Gallery, Studies => Shrine. Сделай скролл и отпусти. Наслаждайся)
Sergey Lavinov
Если у тебя на IPhone XS Max, конечно, или еще что
Sergey Lavinov
Странный арг, ибо он все еще написан на флаттере, написан гуглом и работает не оч
Sergey Lavinov
Если это не аргумент, то я не знаю
tdesc
напиши такое на нативе и чтобы работало лучше
tdesc
тогда будет аргумент
Sergey Lavinov
Ограниченный горизонтальный скролл?
Sergey Lavinov
Я такое на RN напишу минут за 40
Sergey Lavinov
И кадров будет +- 60
Sergey Lavinov
Не спорю, работать на нем не так приятно, как с Flutter
Александр Котков
ну галерея написана вроде даже до релизки
Александр Котков
уже много потимизаций сделано было с того момента
Sergey Lavinov
Она разве не обновляется?
Александр Котков
хм, и правда обновляют
Александр Котков
10 января последн апдейт
Александр Котков
ну она такая чиста набрасил показать визуал, не думюа что там над перформансов заморачиывались
Александр Котков
вот игру их глянь, там список с flare анимациями
Александр Котков
и у меня все гладко
Sergey Lavinov
Да, чекну сегодня вечерком, спасибо
admin
на iphone вроде как ещё частота процессора может падать из за батареи изношенной
tdesc
вот это незамутненная ложь )
Sergey Lavinov
Ты на RN писал что-нибудь?
tdesc
там явно не оптимизацией занимаются
Александр Котков
ну да, виджеты добавят и все
tdesc
RN заведомо более медленная технология изза js bridge ) о каких 60 fps ты говоришь
tdesc
у тебя там будут нативные имплементации под обе платформы? )
Sergey Lavinov
Скролл не требует бегать по мосту. По мосту он бегает либо когда нужно что-то отрисовать, либо когда вызывает что-то нативное. Самый обычный скролл работает также плавно, как и натив. За исключением того, что запускается апа дольше, ибо сначала нужно прогрузить JS движок
tdesc
ну и анимация у тебя там будет?
tdesc
на флаттере никакой скролл не тормозит
tdesc
не надо фантазировать
tdesc
js движок на каждый вызов функции тратит дополнительные ресурсы на вызов и передачу параметров в браузер
Sergey Lavinov
Хорошо-хорошо, не тормозит)
Sergey Lavinov
Анимации - отдельная тема, почему я пишу на флаттере, ибо в RN они ограничены, если тебе нужны 60 фпс
Sergey Lavinov
Но скролл там нативный
Sergey Lavinov
Хорошо, нету)
tdesc
я люблю почитывать чатик реакт нативщиков, очень смешной
tdesc
обмазаны чужим кодом по самые гланды и постоянно что то не работает то на одной платформе то на другой
tdesc
ну и советы типа, эээ мож пакет сменить
Sergey Lavinov
Сам ты при этом на нем не писал?)
tdesc
я писал достаточно на Google Polymer
tdesc
и на React, немного на Ангуляре
Sergey Lavinov
Да это понятно, у него много проблем. Но ты ему приписываешь то, в чем он как раз хорош
tdesc
он ни в чем не хорош
tdesc
ничего не делает хорошо
tdesc
кроме разве что обновления кода без релиза
e s
Маленький злой хейтер :с
tdesc
я лично немаленький ) и не очень злой. прост реакт технология прошлого поколения, сразу после кордовы
tdesc
так и не дожив до версии 1.0 рн отправляется на покой. большинство серьезных кампаний его уже не рассматривают
e s
Чистый RN так не умеет, кстати
tdesc
единственное преимущество, причем кажущееся, что есть реюз веб кода, но по факту, в разработке нужно сразу 3 программиста, айосник, андроидщик и реакт нативщик. иначе оно не поедет.
Kirill Valyavin
У меня ровно такие впечатления от RN. Поскольку я не андроидщик, не айосник и даже не реактщик, опыт был постоянно такой: всё сломалось, ничего не работает, не у кого спросить (не заходил специально, только гуглил). С переходом на флаттер как-то исчезло это всё, работает и работает. Один раз пришлось в коде одного плагина бампнуть версию котлина разве что, но для этого никаких особых навыков не надо
Kirill Valyavin
Ах да, ещё тормозило всё на телефоне
Kirill Valyavin
... флаттер подходит, а РН нет
e s
так будем же толерантны
???????
[
"Если что, проверенно в вебе полностью работает от и до bloc, rxdart, indexedDB, local и session storage\n\n",
{
"type": "link",
"text": "https://plugfox.ru/"
},
""
]
Sergey Lavinov
Круто! А чего старт такой долгий?
Sergey Lavinov
Прикольный канеш
Sergey Lavinov
Ааа, тогда круто
tdesc
веб имеет свойство грузиться так себе
Kirill Valyavin
А можно ли определённо сказать, быстрый ли js получается?
???????
[
{
"type": "pre",
"text": " yield PerformingInit('Запускаю базу данных...');\n await Repository.initDB();\n yield PerformingInit('Получаю настройки...');\n settingsBloc.dispatch(ReadSettings());\n yield PerformingInit('Ращу грибы после дождя...');\n await Future.delayed(Duration(milliseconds: 750));\n yield PerformingInit('Строю коммунизм...');\n await Future.delayed(Duration(milliseconds: 750));\n yield PerformingInit('Еще чуть-чуть...');\n await Future.delayed(Duration(milliseconds: 750));\n yield PerformingInit('Последний чих...');\n await Future.delayed(Duration(milliseconds: 750));\n yield PerformingInit('Поехали!');\n await Future.delayed(Duration(milliseconds: 750));",
"language": ""
},
""
]
Artyom Nesterenko
Прикольная загрузка. ??
???????
Все логируется и хранится между сеансами
???????
Так что оптимизации завести, отладку сделать ну и чтоб прям полностью единую кодовую базу с флатером. Но уже сейчас более чем работоспособно на первый взгляд.
Spirit??
Из-за чего на айфоне такая херня со статус баром? Стоит сейфвью
Spirit??
Или сейфареа, не помню как
Sergey Lavinov
Разная кодовая база сейчас?
???????
Ну я считай букву в букву скопировал с мобильного приложения. Только localprovider заменил и flutter/material импорты на flutter_web/material
???????
Но они наверняка сделают так, что не придется даже и с этим заморачиваться, будет один сорц, а в билде сразу все платформы.
Sergey Lavinov
Есть же отложений импорт, можно через него разрулить
???????
Не, они наверняка сделают тк я говорю)
???????
Нужно прост немног обождать)
Sergey Lavinov
Как временное решение пока можно и так вкостылить)
???????
А так прям вообще все портанул с мобилки, букву в букву. flutter_bloc думал будут проблемы, тк там в зависимостях флатер. Ан нет, прост копипастнул его исходники и все завелось.
Artyom Nesterenko
Тем временем в репозиторий Flutter набежало больше 5k issues. Кажется, впервые такое вижу. ??
Александр Котков
давно уже
Sergey Lavinov
Справедливости ради, там общая помойка issues для движка, флаттера и всех их плагинов
Александр Васильев
Кто-то использует?
IB Akhrorov
Хорошая штука
Александр Васильев
[
{
"type": "link",
"text": "https://flutter.github.io/devtools/inspector"
},
" \nеще бы почитать что на Медиуме"
]
Alik E.
Кто-нибудь может подсказать, почему, при навигации на следующий роут, теряется цвет статусбара, установленного ранее
Alik E.
[
"В новом роуте в самом начале билд метода вызываю \n",
{
"type": "pre",
"text": "SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark.copyWith(\n statusBarBrightness: Brightness.dark,\n));",
"language": ""
},
""
]
Alik E.
Причем, если убрать AppBar, то цвет статусбара корректный
Александр Васильев
Подскажите по асихронности..
Анатолий
обычный такой себе фор
Александр Васильев
for(..) да?
Анатолий
погоди, вторым обрабатывался это что значит?
Анатолий
он у тебя итак асинхронный судя по логам
Александр Васильев
flutter: Complite add Vacation flutter: Create object Vacation flutter: Add new day: -LeSlMBy0O1QRSm5BFoj / 2019-05-09T21:05:16.908485 flutter: Vacation submit flutter: Add new day: -LeSlMBy0O1QRSm5BFok / 2019-05-10T21:05:16.908485 flutter: Add new day: -LeSlMBzuHszYGU7yfak / 2019-05-11T21:05:16.908485
Анатолий
может ты хочешь чтоб он был синхронным?
Александр Васильев
flutter: Add new day: -LeSlMBzuHszYGU7yfak / 2019-05-11T21:05:16.908485 - вот это в цикле
Александр Васильев
Да хочу чтоб синхронно было принт 1 цикл принт 2
Анатолий
тогда тебе надо чтоб все части были асинхронные
Анатолий
все после этого цикла
Александр Васильев
flutter: Complite add Vacation flutter: Add new day: -LeSlMBy0O1QRSm5BFok / 2019-05-10T21:05:16.908485 flutter: Add new day: -LeSlMBzuHszYGU7yfak / 2019-05-11T21:05:16.908485 flutter: Add new day: -LeSlMBy0O1QRSm5BFoj / 2019-05-09T21:05:16.908485 flutter: Create object Vacation
Анатолий
оберни нужный код ф функцию, верни футуре и добавь авейт
Анатолий
через Completer скажешь когда надо идти дальше
Анатолий
[
{
"type": "link",
"text": "https://api.dartlang.org/stable/2.3.0/dart-async/Completer-class.html"
}
]
Александр Васильев
типа такого?
Spirit??
почему черный статусбар? как решить эту траблу?
Александр Васильев
Судя по вашему нику так и должно быть)
Spirit??
как я понял, флаттер пытается "затемнить" статусбар
Spirit??
относительно цвета аппбара
Spirit??
и что-то у него плохо получается
Кирилл Адещенко
Можно поменять через SystemChrome
Александр Васильев
мрачновато.. =0 ну не буду флудить..
Spirit??
ага, тоже так думал. попробую
Кирилл Адещенко
Такое ощущение что есть safeArea
Spirit??
Ток где связь со статус баром?
Кирилл Адещенко
У нас тоже была такая проблема
Кирилл Адещенко
Тут нужно думать относительно логики экрана
Кирилл Адещенко
Можно поставить safe area только tip
Кирилл Адещенко
Потому что с низу тоже чёрная полоса
Кирилл Адещенко
Top : true
Spirit??
Safearea на андроид распространяется?
Maria
Можно использовать Future.forEach
Александр Васильев
с await Future.forEach работает)
Александр Васильев
спасибо
Александр Васильев
[
{
"type": "mention_name",
"text": "Maria",
"user_id": 410551855
},
" спасибо!"
]
Александр Котков
так сделай проверку что если дебажка , то факушку показать на весь экран
Александр Котков
ещё можно покрутить на 360 для анимашки
Александр Котков
??понятн
Artyom Nesterenko
Причем это для Material, в Cupertino как-то через ScrollPhysics надо.
Rinat Kurmashev
Кто на каком channel?
Rinat Kurmashev
Я на мастере
Rinat Kurmashev
У меня почему то на винде stable по умолчанию встал
Rinat Kurmashev
А на маке мастер
Hellomik
хей знаете почему текст не показывает в PageVIew()
Hellomik
[
{
"type": "pre",
"text": " \nPageView(\n \n children: [\n Container(\n child: Text(\"ere\"),\n color: Colors.amber,\n ),\n Text(\"erasdasde\", style: TextStyle(color: Colors.black, fontSize: 30.0,),),\n ],\n ),",
"language": ""
}
]
Hellomik
типо если так почему не показывает
Анатолий
кроме пейдж вью есть еще что-то?
|