Как стать автором
Обновить
13.1

Flutter *

Фреймворк для кросс-платформенной разработки

Сначала показывать
Порог рейтинга

Почему мы разлюбили Isar

Isar — это NoSQL база данных, которую когда-то разработали создатели Hive. Про все плюсы этой БД мы уже писали. Однако однажды нашей Flutter-команде достался проект, который заставил их в корне изменить отношение к Isar и отказаться от этой технологии раз и навсегда.

Это было приложение для аграриев — то есть буквально для людей, которые работают в полях. Грубо говоря, оно помогало фермерам следить за состоянием угодий: например, проверять, что уже обработано от колорадского жука, а что пока не обработано. В общем, полезная штука для очень понятной целевой аудитории.

Но специфика приложения накладывала на нас и вполне себе конкретные технические требования: оно должно было бесперебойно работать в офлайне — поля всё-таки бывают далековато от вышек мобильных операторов. Для реализации офлайн-режима как раз и был выбран Isar — это решение казалось удобным.

Как же мы ошибались! Так как у приложения был офлайн-режим, на старте оно загружало большие объемы данных, среди которых, например, было гигантского видео. И это создавало проблемы. В приложении добавлялись новые справочники, но документации на миграцию в Isar не было. К тому же на Android 32-ой архитектуры в базе вылезли баги.

Как исправить эти нюансы, мы не поняли. Писали письма разработчикам Isar, смотрели, что пишут об этом в сообществах. Но в итоге махнули рукой: решили всё переписать на SQL. Выбрали Drift, так как уже имели опыт работы с ним. Взяли уже готовый интерфейс и добавили его в приложение. Вскоре поняли, что Drift отвечает нашим запросам. Isar же использовать в проектах больше не планируем.

Кстати, этот проект в целом оказался судьбоносным для нашей команды Flutter. Какие еще уроки они вынесли после работы над приложением — в отдельной статье.

Теги:
+1
Комментарии0

Google I/O 2025: два вечера главных анонсов вместе с Surf

20 и 21 мая — подключайся к нашим стримам по Google I/O. Будем вместе следить за анонсами новинок, делиться первыми впечатлениями и обсуждать всё самое интересное из мира технологий и разработки в прямом эфире.

Смотрим и комментируем:

  • 20 мая (вторник)
    → 20:00 — Google Keynote: все главные анонсы и будущее технологий от Google.

  • 21 мая (среда)
    → 20:00 — What’s new in Android development tools: новинки для Android-разработчиков.
    → 21:00 — What’s new in Flutter: свежие обновления для Flutter-сообщества.

Время указано по Москве. Позже добавим сюда наших спикеров и персональные ссылки на трансляции.

Залетай на эфиры в нашу группу ВКонтакте, чтобы обсудить новинки и пообщаться с разработчиками. Запись сохраним.

Теги:
0
Комментарии0

⚡️Вести с полей - Duit

Новый релиз flutter_duit v3.5.0!

Что внутри:

⚙️ Новые виджеты: AnimatedAlign, AnimatedRotation, AnimatedPadding, AnimatedPositioned, AnimatedScale

⚙️ Фикс работы колбека окончания анимации для implicitly animated widgets

⚙️ Добавлены отсуствующие свойства атрибутов для виджета ElevatedButton

⚙️ Добавлена обработка свойств TextDecoration при парсинге TextStyle

⚙️ Передача свойства body для виджета Scaffold теперь осуществляется через свойство child json-схемы, а не через атрибуты виджета

⚙️ Исправление ряда багов в DSL-пакетах

Подробности о самом интересном:

🔧 В рамках релиза удалось исправить ряд проблем с DSL, где отсутствовали реализации некоторых виджетов (например AnimatedSize в duit_go)

🛠 Улучшена стабильность фреймворка, увеличено покрытие важных участков кода тестами

Поддержать проект:
- Кодом
- Денежкой
- TG канал DUIT

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Попробую запостить тут пост - размышления :)
Наконец-то написал небольшой mcp сервер для flutter до относительно стабильного состояния.

Самым интересным было понять как работать с dart vm и devtools extensions - можно ли вообще обращаться к ним со стороннего сервера и что можно использовать для агента (например в cursor).

Так как на момент начала dart mcp сервера стабильного не было в pub.dev, решил mcp server писать на typescript.

Что получилось (на данный момент)

Архитектура сообщений (использовал везде JSON RPC 2, так как это по умолчанию протокол общения с Dart VM):

  1. MCP server <-> Dart VM
    Из плюсов - прямой доступ, проще работать
    Из минусов - не все методы работали (в основном связанные с другими extensions), все структуры нужно писать с нуля

  2. MCP server (TS) <-> Forwarding Server (TS) <-> Devtools Extension (Dart) <-> Dart VM
    Из плюсов: в devtools можно использовать готовые библиотеки для работы с dart vm. Все методы работают как должны. Можно очень просто дебажить все методы, так как есть прямой доступ к dart vm, и не нужно работать через MCP inspector.
    Все ошибки мониторятся (слушаются через Dart VM) в Devtools Extension.

    Из минусов: сложность запуска: нужно обязательно запускать Forwarding Server, Devtools Extension и проверять что всё работает.

    Почему так: напрямую MCP server связать с Devtools Extension пока не удалось, идея через регистрацию методов в Dart VM, чтобы Dart VM выступала как forwarding server пока тоже не сработала.

Изначально, чтобы разобраться как работает, подключил все методы, доступные в dart vm, но со временем пришел только к двум-трем основным:
- get_app_errors - чтобы мониторить ошибки, появляющиеся в Dart VM. Использовал только краткое описание, чтобы было сложно переполнить context.
- hot_reload - чтобы агент мог сделать hot reload и ошибки записались в Devtools Extension.

Теги:
Рейтинг0
Комментарии0

Хардкодить допоздна? А может, лучше нет, ворк?

>> Регистрация и программа <<

23 апреля в 20:00 приглашаем воронежских разработчиков на неформальный митап. Для тех, кто не сможет прийти офлайн, будет трансляция.

Никаких скриншотов кода на слайдах. Никакого душного обсуждения документации. Поговорим о том, что окружает нас вне работы. Прокачаем софт-скиллы и нетворкинг.

В программе митапа три доклада:

  • Лёша, Android-разработчик Surf — «Дедлайн "вчера": как работать с приоритетами».

    Как рассеивается внимание? Как ставить приоритеты в работе с командой? Когда нужно выносить переписку в звонок, а когда можно обойтись текстом? Ответим на эти и многие другие вопросы про приоритеты в работе и жизни.

  • Дима, Flutter-разработчик Surf — «Тимлид — друг или враг? Или так»?

    Расскажу о роли тимлида, но со стороны нижестоящего сотрудника. Что мне нравится/что не нравится в лиде, что для меня кажется полезным, а смысл чего я не понимаю.

  • Кирилл, iOS-разработчик, наш друг и гость из Una Financial — «Work-life health для IT-шника среднего возраста».

    Поделюсь жизненными проблемами разработчиков и способами их решения. Внимательный слушатель вообще сможет их избежать! Обсудим, как сделать жизнь лучше, повысить её качество. Максимально продлим трудоспособный возраст.

Митап пройдет 23 апреля, в 20:00, в воронежском пространстве «Eventuki»: ул. Фридриха Энгельса, 52.

Участие в митапе бесплатное, чтобы прийти или получить ссылку на трансляцию, нужно зарегистрироваться 👈

Запись трансляции обязательно сохраним, но если вы из Воронежа, мы очень ждём понетворкать вживую. До встречи 😉

Теги:
Рейтинг0
Комментарии0

⚡️Вести с полей - Duit

Новый релиз flutter_duit v3.4.0!

Что внутри:

  • ⚙️ Новые виджеты: GridView, Card, AppBar, Scaffold, InkWell, CarouseView, AnimatedContainer

  • ⚙️ Повышена минимальная версия Flutter SDK для использования Duit (3.24.x)

Подробности о самом интересном:

🔥 Поддержка виджетов Scaffold, AppBar и Card ознаменует начало работы над полноценной реализации всего набора виджетов из библиотеки material

🚀 Приведен в порядок публичный проект на github, который поможет отслеживать прогресс разработки виджетов и новых фич фреймворка

О проекте:

Теги:
Рейтинг0
Комментарии0

⚡️Вести с полей - Duit

Новый релиз flutter_duit v3.3.0!

Что внутри:

  • ⚙️ Wasm-совместимая реализация WebSocketTransport

  • ⚙️ Новые виджеты: SafeArea, IntrinsicWidth, RemoteSubtree

  • ⚙️ Экспорт API duit_kernel, полноценная поддержка тем фреймворком

  • ⚙️ Автоматический тайпкаст контроллеров кастомных виджетов

  • ⚙️ Исправлена ошибка аттача контроллера к драйверу после тайпкаста

Подробности о самом интересном:

🔥 Среди новых виджетов есть совершенно особенный - RemoteSubtree. Этот виджет позволяет динамически загружать собственный контент (макет дочерних поддеревьев виджетов). Ключевая фича виджета - возможность передать ему список зависимостей (по аналогии с действиями), благодаря которым будут собраны данные виджетов и переданы в теле запроса на получение контента.

🚀 Экспорт API duit_kernel, который отвечает за работу тем. С этого релиза этой функцией можно уверенно пользоваться! В example app добавлен пример использования нового API.

🎁 Работа с кастомными виджетами стала еще более удобной! Больше не требуется вручную кастовать UIElementController<dynamic> к UIElementController<тип_атрибута> - приведение типов будет выполенено автоматически.

О проекте:

Теги:
Рейтинг0
Комментарии0

Приближается конференция для Flutter-специалистов

Уже в эту пятницу, 21 февраля, в Москве пройдет FlutterConf — профессиональная конференция по Flutter. Ожидается, что соберется больше двухсот специалистов — докладчиков и слушателей.  

Доклады будут читаться в два потока, тематика достаточно широкая: реальные кейсы с нестандартными требованиями, архитектурные решения и инструменты для Flutter-проектов. Выступать будут разработчики и тимлиды из Amiga, Яндекс-Про, Билайна, Лаборатории Касперского, Потока, Открытой мобильной платформы, Friflex, MadBrains, BetBoom.

А в шесть часов вечера начнется круглый стол, посвященный прошлому, настоящему и будущему Flutter.

Посмотреть расписание конференции и зарегистрироваться можно на сайте (регистрация платная), посетить ее можно в Москве в Radisson Blu Belorusskaya Moscow или же подключиться удаленно.

От «Финама» мы отправим туда нескольких выразивших желание разработчиков из Москвы, а также будем смотреть мероприятие в Питере, в коворкинге. Наша команда работает с Flutter с 2019 года, наши приложения выигрывают премии на тематических мероприятиях. Кстати, прямо сейчас у нас открыта вакансия Flutter-разработчика, и, если кому-то из хабравчан интересно – написать можно нашему рекрутеру.

Теги:
Рейтинг0
Комментарии0

Обнаружены проблемы с отображением Flutter приложений на Snapdragon 8.

https://github.com/flutter/flutter/issues/137002

Проблемы касаются тех приложений, которые используют Impeller (новый графический движок, который пришёл на замену Skia), при его отключении всё становится хорошо.
Проблемы замечены на Samsung Galaxy S22+, Redmagic 10, Honor Magic6 Lite 5G и Honor Porshe Design Magic7 PSR. На всех этих устройствах установлен Snapdragon 8.

Пример глитча:

Теги:
Рейтинг0
Комментарии2

‼️ Dart отказывается от макросов! Что дальше? ‼️

Официальное объявление от команды Dart: разработка макросов остановлена.

После нескольких лет экспериментов выяснилось, что их реализация слишком сильно замедляет компиляцию и ухудшает разработческий опыт (о чем не раз писал и говорил на Crossconf 2024). У меня были предположения, что мы увидим макросы только в 2026-м году, но такого поворота событий совсем не ожидал >_<

Конечно, это не повод ставить крест на Dart, хотя и очень обидно! 😭 Вместо макросов команда сосредоточится на:

  • Улучшении работы с данными – это самая востребованная фича среди разработчиков.

  • Оптимизации build_runner – ускорение сборки и улучшение генерации кода.

  • Внедрении augmentations – новый инструмент, который упростит кодогенерацию.

👉 Подробнее об этом можно прочитать в статье на Medium, которую написал директор по разработке Dart и его экосистемы Vijay Menon

Что думаете по этому поводу? Какие в таком случае новые фичи ждете? Разочарованы ли отменой макросов?

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как CodeStyle спасает Flutter-проекты от хаоса

Разрозненная структура файлов, разные подходы к оформлению и дублирование функциональности — всё это замедляет разработку и повышает вероятность ошибок.
Чтобы победить хаос, сделать работу команды быстрее и проще, попробуйте внедрить CodeStyle — это свод правил, которые делают код читаемым, стандартизированным и удобным для поддержки.

Вот что вы получите:

  • Читаемость: новые участники команды быстрее понимают проект.

  • Стандартизация: вся кодовая база выглядит так, будто ее писал один человек.

  • Поддерживаемость: проще рефакторить и находить ошибки.

Почему CodeStyle особенно важен для Flutter

Flutter на проектах дает гибкость, которая при отсутствии дисциплины превращается в проблему. Например, вы можете столкнуться с:

  • разрозненной структурой файлов, которая затрудняет поиск компонентов;

  • непоследовательным оформлением кода, которое усложняет его понимание;

  • дублированием библиотек и функционала, которое приводит к путанице.

Единый CodeStyle решает эти проблемы и создает прозрачную и предсказуемую структуру проекта.

Как внедрить CodeStyle: 4 шага

1. Обучение

Проводите мастер-классы и лекции, показывайте примеры из реальных проектов. Это помогает разработчикам видеть преимущества стандартов.

2. Автоматизация

Настройте инструменты для проверки кода:

  • линтеры (например, flutter_lints) для автоматической проверки стиля;

  • pre-commit хуки (Husky или Lefthook) для форматирования кода перед коммитом.

3. Код-ревью

Сделайте ревью обязательным этапом Pull Request. Это улучшит качество кода и поможет следить за соблюдением правил.

4. Командное соглашение

Создайте документ с правилами CodeStyle и внедрите их в культуру команды. Пусть разработчики понимают, что стандарты упрощают жизнь каждому.

Если хотите внедрить эти подходы на своих проектах, читайте подробную статью от нашего Flutter-разработчика Никиты Грибкова. В ней найдете больше примеров, кода и рекомендаций.

Теги:
Рейтинг0
Комментарии0

Привет,Хабровчане ! Неожиданно решился на создание этой публикации – пусть она окажется полезной для кого-то из вас. Представьте ситуацию: рабочий день позади, включаем компьютер, запускаем музыкальное сопровождение и... прямо в кресле дивана нас уже сморит Морфей. Пробуждение же наполняет осознанием неразрешимой дилеммы – выключить ПК или переключить трек? Особенно когда репертуар оставляет желать лучшего!

Вот и приходится преодолевать себя, чтобы добраться до компьютера.

Так вот, в качестве решения этой проблемы разрабатываю приложение для Android с небольшим сервером на PC (начало только под Windows).

Основной фишкой станет регулировка яркости экранов, удаленное отключение ПК, переключение треков в плеере.

Телефонное приложение будет максимально чистым: без рекламы, подписок или дополнительных платежей.

Я – инженер(технарь), а не профессиональный программист, так что обещаю уделять больше внимания техническим моментам .

Все будет сделано в меру моих умений и возможностей. Благодарен за внимание! По мере продвижения работы буду дополнять этот пост новыми деталями.

А какого функционала не хватает вам ?

Пока все в стиле демо
Пока все в стиле демо

Сделал ещё несколько дэмок . 2 приложения на kivymd (python3) связь с сервером http запросами ,но вес приложения уменьшить не удалось . Попробовал на flutter спасибо Гуглу ,ии и другу разработчику ,связь. с сервером с помощью протокола mqtt.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии11

Прошедшее мероприятие от команды Flutter - #FlutterInProduction можно разбить на 3 части (если лень читать - вот ссылки на видеоразбор мероприятия ЮТУБ ВК)

👉 Разговор про эры развития Flutter:

  • эра экспериментов (2014 - 2018)

  • эра роста ( 2018 - 2022)

  • Эра кровавого энтерпрайза (начиная с середины 2022 года)

Разработчики наконец-то определились со зрелостью фреймворка и на протяжении этой части (да и всего мероприятия) нам показывали, что Flutter применяется в разных областях и крупными компаниями с огромнейшим потоком клиентов ^_^

👉 Экосистема

Тут было про поддержку различных IDE, что на pub доступны более 50к пакетов. Заострили внимание на том, что вокруг Flutter выстраивается экосистема (FlutterFlow, Shorebird, Serverpod, Codemagic), в то время как он сам по гланды интегрирован в экосистему Google☝️

Отдельно следует отметить упоминание о Flutter Consultants, что говорит о реальной зрелости фреймворка😎

👉 Если обобщить все услышанное с секцией Roadmap, получится следующая выжимка над чем будет работать команда Flutter в 2025 году:

👀 Точность воспроизведения платформ. Такое обновление виджетов, чтобы у людей не складывалось ощущение, что это Flutter

🔥 Impeller (Flutter GPU) не только на мобилках, но и на десктопе (web пока под большим вопросом)

🔥🎉🥳 Средства предварительного просмотра виджетов с поддержкой редактирования

🔥🎉🥳 Прямое взаимодействие с native platform

🔥🔥🔥 Ускорение написания и упрощение чтение кода (p.s. это подгорает мой пердак от увиденных декораторов 😂, первичный конструктор - норм тема😎)

Не все показанное может быть реализовано на 100% От некоторых фич могут отказаться или перенести на потом.

А что вы думаете о прошедшем мероприятии?

Теги:
Рейтинг0
Комментарии1

Ближайшие события

Прошедшее мероприятие от команды Flutter - #FlutterInProduction можно разбить на 3 части (если лень читать - вот ссылки на видеоразбор мероприятия ЮТУБ ВК)

👉 Разговор про эры развития Flutter:

  • эра экспериментов (2014 - 2018)

  • эра роста ( 2018 - 2022)

  • Эра кровавого энтерпрайза (начиная с середины 2022 года)

Разработчики наконец-то определились со зрелостью фреймворка и на протяжении этой части (да и всего мероприятия) нам показывали, что Flutter применяется в разных областях и крупными компаниями с огромнейшим потоком клиентов ^_^

👉 Экосистема

Тут было про поддержку различных IDE, что на pub доступны более 50к пакетов. Заострили внимание на том, что вокруг Flutter выстраивается экосистема (FlutterFlow, Shorebird, Serverpod, Codemagic), в то время как он сам по гланды интегрирован в экосистему Google☝️

Отдельно следует отметить упоминание о Flutter Consultants, что говорит о реальной зрелости фреймворка😎

👉 Если обобщить все услышанное с секцией Roadmap, получится следующая выжимка над чем будет работать команда Flutter в 2025 году:

👀 Точность воспроизведения платформ. Такое обновление виджетов, чтобы у людей не складывалось ощущение, что это Flutter

🔥 Impeller (Flutter GPU) не только на мобилках, но и на десктопе (web пока под большим вопросом)

🔥🎉🥳 Средства предварительного просмотра виджетов с поддержкой редактирования

🔥🎉🥳 Прямое взаимодействие с native platform

🔥🔥🔥 Ускорение написания и упрощение чтение кода (p.s. это подгорает мой пердак от увиденных декораторов 😂, первичный конструктор - норм тема😎)

Не все показанное может быть реализовано на 100% От некоторых фич могут отказаться или перенести на потом.

А что вы думаете о прошедшем мероприятии?

Теги:
Рейтинг0
Комментарии0

Внедряем модели машинного обучения в мобильное приложение на Flutter

Если Flutter-приложение нужно сделать более удобным и инклюзивным, скорее всего, придется использовать технологии ML. Вот только несколько примеров задач, в которых машинное обучение наверняка понадобится:

  • классификация изображений: чтобы приложение могло распознавать объекты на фотографиях или видео (например, Google Lens);

  • обработка естественного языка (NLP): в приложениях с голосовыми ассистентами или чат-ботами ML обрабатывает речь и тексты;

  • персонализация: алгоритмы ML анализируют поведение пользователей и предлагают персонализированный контент или рекомендации;

  • распознавание голоса: используется в приложениях для конвертации речи в текст и команд.

Существует несколько способов, как интегрировать модели машинного обучения в приложение. Можно воспользоваться ML Kit от Firebase или библиотеками на Dart. Но самое распространенное решение — фреймворк TensorFlow Lite (TFLite). Его главное (но не единственное) преимущество — что он будет работать в том числе тогда, когда смартфон не подключен к интернету.

В отдельной статье разбираем, как настроить модель для работы с TFLite, как интегрировать TFLite во Flutter-приложение и как оптимизировать модели для мобильных устройств.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Нативные инструменты для создания виджетов во Flutter-приложении

Несмотря на все преимущества Flutter, он не всегда оптимально решает задачи, которые требуют глубокой нативной интеграции. Существуют инструменты, разработанные специально под нативные платформы, но недоступные напрямую из Dart. И как правило, в таких случаях на помощь приходит PlatformChannel

Но существуют и нативные инструменты, которые интегрируются с Flutter. Они, например, позволяют внедрять Home Widgets — элементы, с которыми можно взаимодействовать напрямую с домашнего экрана

Когда виджеты разработаны, их нужно внедрить в приложение. Библиотека home_widget предоставляет набор инструментов для работы с нативными виджетами, данные методы мы можем вызвать при помощи класса HomeWidget. Вот самые важные из методов:

  1. Future<bool?> saveWidgetData<T>( String id, T? data ) 

    Метод позволяет сохранить передаваемые данные в хранилище нашего виджета.

  2. Future<bool?> updateWidget({String? name, String? androidName, String? iOSName, String? qualifiedAndroidName,})

    Метод вызывается для обновления нашего виджета.

  3. Future<T?> getWidgetData<T>(String id, {T? defaultValue,})

    Метод позволяет прочитать данные из нашего виджета. Он может быть полезен, если нужно синхронизировать информацию между виджетом и Flutter-приложением.

Больше подробностей о нативных инструментах с примерами кода вы найдете в отдельной статье.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

🛠️ Главные инструменты Rive

Для работы с Rive Animation лучше использовать их UI-интерфейс, в котором и происходит создание и настройка самой анимации. Анимация состоит из нескольких составляющих. Они больше знакомы дизайнерам, но, если кратко, вот некоторые из них.

  1. Artboard: слой, который является холстом анимации — на нем располагаются остальные элементы. В нем можно задать цвет и размер фона. В каждом файле Rive есть хотя бы один такой.

  2. Group: необязательный элемент, но он отлично подходит, чтобы объединить элементы в группы для любого объекта, изменение которого может потребоваться в дальнейшем.

  3. Shape: Rive позволяет создавать, редактировать и анимировать векторную графику, используя процедурные или пользовательские фигуры. Из них чаще всего и состоит весь интерфейс.

  4. Pen: это инструмент, который позволяет делать очень сложные кастомные фигуры.

Про анимации и Flutter-приложения много пишет руководитель нашего отдела мобильной разработки Саша Ворожищев — подписывайтесь на его канал, если интересна эта тема.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Hola, Amigos! Делюсь с вами записью своего доклада с конференции Mobius на тему «Создание indoor-карты здания на Flutter». Рассказал, как реализовать размещение на одном или нескольких экранах внутренней карты здания. А также раскрыл подходы и собственное решение с использованием Flutter.

Держите ссылки:

YOUTUBE 

VK

Смотрите на любой удобной платформе и делитесь в нашем чате мобильных разработчиков, на какую тему вы бы точно пришли на конференцию?

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Сегодня поговорим про отображение HTML-тегов как виджетов в наших приложениях на Flutter.

Чаще всего для этого используется библиотека flutter_html:

Html(data: ‘<p>Hello World</p>’);

Но у нее есть несколько минусов:

– Она больше года не обновлялась, что с одной стороны хорошо, так как она стабильна, а с другой — она уже устаревает.
–В ней есть баги. Например, если внутри тега <p> окажется список (<ul>, <ol>), то снизу появляется отступ, равный высоте списка.
– Не очень понятная система стилизации. Чтобы что-то изменить, нужно разобраться, как это делается, так как вместо CSS-атрибутов используются собственные подходы.

Пример стилизации, где нужно поменять размер шрифта для всего документа:

  data: ...,
  style: {
    ‘*’: Style(
      fontSize: FontSize(15),
    ),
  }
);

Столкнувшись с этими минусами, мы решили перейти на вторую по популярности библиотеку — flutter_widget_from_html_core. Во-первых, она лишена вышеописанных багов. Во-вторых, она модульная, и к ней можно многое прикрутить.

HtmlWidget(‘<p>Hello World</p>’);

Со стилями всё интереснее. Шрифт устанавливается через стандартный TextStyle:

  ...,
  textStyle: 
TextStyle(...),
);

Но если нужно его раскрасить или что-то ещё, всё становится сложнее. Продолжение по ссылке.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Lottie vs. Rive

Это два популярных инструмента для создания анимаций в приложениях на Flutter. Сравнили их плюсы и минусы.

Lottie

Плюсы:

  • Простота использования: благодаря поддержке JSON, Lottie доступен для разработчиков любого уровня.

  • Кроссплатформенность: позволяет использовать одни и те же анимации на разных платформах.

  • Широкое комьюнити: в сети есть большое количество готовых анимаций.

  • Гибкость: Lottie позволяет настраивать анимацию и эффекты, что дает больше контроля над результатом.

Минусы:

  • Ограничения по сложности: Lottie не подходит для очень сложных анимаций с большим количеством элементов и эффектов.

  • Производительность: в некоторых случаях Lottie потребляет слишком много ресурсов, что плохо влияет на производительность приложений.

Rive

Плюсы:

  • Интерактивность: Rive поддерживает интерактивные анимации, которые реагируют на пользовательские действия.

  • Мощный редактор: он понятный, функциональный и с ним не нужно погружаться в дебри разработки.

  • Производительность: с Rive получается быстрая и плавная анимация благодаря формату файлов.

Минусы:

  • Сложность использования: у Rive более сложный интерфейс, чем у Lottie, новичкам с ним работать трудно.

  • Размер файлов: Rive-анимации могут быть тяжелыми, и это влияет на вес всего приложения.

Итого: если вам нужны простые и легкие анимации с быстрой интеграцией, Lottie — отличный выбор. Для сложных, интерактивных и высокопроизводительных анимаций лучше подойдет Rive.

Подробнее про Rive писали в большой статье и в тг-канале о мобильной разработке и ИТ.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0
1