Flutter схлестнулся с Нативом в чемпионате DigitalSkills в Казани
8 участников
7 - натив андроид,
1 - Флюттер
Итог такой:
1. Андроид
2. Флюттер
3. Андроид
…
8. Андроид
Это показывает, что флаттер может конкурировать с нативными средствами разработки в скорости и качестве (кода).
Хоть это и совсем нерепрезентативно
8 участников
7 - натив андроид,
1 - Флюттер
Итог такой:
1. Андроид
2. Флюттер
3. Андроид
…
8. Андроид
Это показывает, что флаттер может конкурировать с нативными средствами разработки в скорости и качестве (кода).
👍5🍾1
Реализация паттерна “Спецификация” на dart
Нашел примение этого паттерна в скоринге кредитных заявок: к клиенту предъявляются требования, как сумме и продолжительности кредита тоже.
Читается это необычно, будто бы читаю СпЕцИфИкАцИю к тому, кому выдавать кредит
Исходный код
Нашел примение этого паттерна в скоринге кредитных заявок: к клиенту предъявляются требования, как сумме и продолжительности кредита тоже.
Читается это необычно, будто бы читаю СпЕцИфИкАцИю к тому, кому выдавать кредит
Исходный код
GitHub
GitHub - WebMad/credit_issuer_specification_example
Contribute to WebMad/credit_issuer_specification_example development by creating an account on GitHub.
Early return pattern упростит вашу жизнь
Суть паттерна в том, чтобы досрочно завершать функцию, вместо того, чтобы писать else.
В примере приведен реальный код из dart’а
Есть классная лекция про метрики кода, хотел бы подсветить цикломатическую и когнитивную сложности.
Мысль у меня такая: если у вас появилась необходимость вложить if в if или дописать else в вашей функции, значит вы что-то делаете не так. Вернитесь на шаг назад и переосмыслите, может быть надо вынести метод? Или дело в концепции?
Суть паттерна в том, чтобы досрочно завершать функцию, вместо того, чтобы писать else.
В примере приведен реальный код из dart’а
Есть классная лекция про метрики кода, хотел бы подсветить цикломатическую и когнитивную сложности.
Мысль у меня такая: если у вас появилась необходимость вложить if в if или дописать else в вашей функции, значит вы что-то делаете не так. Вернитесь на шаг назад и переосмыслите, может быть надо вынести метод? Или дело в концепции?
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Разберем подробнее вчерашний пример с импеллером. Дело в том, что этот пример был создан для демонстрации загрузки UI и Raster потоков. В потоке UI сложная операция, которая рисует множество окружностей на экране + рисует SweepGradient (для отрисовки крутящегося радара). Ну и где-то через полторы минуты приложение крашнулось.
Радар при этом обернут в RepaintBoundary, чтобы выделить новый слой отрисовки и не затрагивать слой со сложной отрисовкой.
На конференции GDG Devfest Astrakhan 2023 расскажу подробнее. Постараюсь побыстрее для вас выложить запись доклада, ну а после доклада выложу видосы с примерами и пришлю ссылку на код.
P.S. да, я запускал с флагами --enable-impeller --profile, и да, это версия 3.16, телефон Google Pixel 7
Радар при этом обернут в RepaintBoundary, чтобы выделить новый слой отрисовки и не затрагивать слой со сложной отрисовкой.
На конференции GDG Devfest Astrakhan 2023 расскажу подробнее. Постараюсь побыстрее для вас выложить запись доклада, ну а после доклада выложу видосы с примерами и пришлю ссылку на код.
P.S. да, я запускал с флагами --enable-impeller --profile, и да, это версия 3.16, телефон Google Pixel 7
🔥3
В эту субботу (25.11) прошла конференция DevFest Astrakhan.
Я счастлив, что удалось порадовать моих земляков докладом про особенности отрисовки UI на Flutter. В городе много молодых, умных и амбициозных ребят.
Надеюсь в ближайшее время появится запись доклада и я смогу ею поделиться с вами. А пока выкладываю ссылку на исходный код проекта (там же есть и презентация).
Напишу еще парочку разъясняющих постов по этому докладу)
Я счастлив, что удалось порадовать моих земляков докладом про особенности отрисовки UI на Flutter. В городе много молодых, умных и амбициозных ребят.
Надеюсь в ближайшее время появится запись доклада и я смогу ею поделиться с вами. А пока выкладываю ссылку на исходный код проекта (там же есть и презентация).
Напишу еще парочку разъясняющих постов по этому докладу)
👍3👏2💋1
Прозрачность во Флаттер
Прозрачность во флаттер может быть коварным инструментом, который в некоторых случаях значительно увеличивает сложность отрисовки страницы.
Сам по себе виджет Opacity вызывает операцию saveLayer (см операции skia). Эта операция занимает много времени в масштабе одного кадра и ее вызов происходит неочевидно. Говоря о примерах вызова saveLayer, можно привести накладывание шейдера, в некоторых случаях источником вызова может стать ClipRRect.
Совет: если есть возможность примешать к цвету прозрачность вместо обертывание в виджет Opacity, примешивайте прозрачность. Накладывание прозрачности на цвет не является сложной операцией и может сохранить производительность вашего приложения.
Ссылочка на официальную доку
Прозрачность во флаттер может быть коварным инструментом, который в некоторых случаях значительно увеличивает сложность отрисовки страницы.
Сам по себе виджет Opacity вызывает операцию saveLayer (см операции skia). Эта операция занимает много времени в масштабе одного кадра и ее вызов происходит неочевидно. Говоря о примерах вызова saveLayer, можно привести накладывание шейдера, в некоторых случаях источником вызова может стать ClipRRect.
Совет: если есть возможность примешать к цвету прозрачность вместо обертывание в виджет Opacity, примешивайте прозрачность. Накладывание прозрачности на цвет не является сложной операцией и может сохранить производительность вашего приложения.
Ссылочка на официальную доку
💋1