Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Релиз Flet 1.0: как создавать кроссплатформенные приложения только на Python

Релиз Flet 1.0: как создавать кроссплатформенные приложения только на Python

Создание кроссплатформенных пользовательских интерфейсов всегда было непростой задачей для Python-разработчиков. Долгое время приходилось либо ограничиваться устаревшими десктопными библиотеками вроде Tkinter и PyQt, либо изучать абсолютно новые экосистемы, такие как Dart и Flutter для мобильных устройств или JavaScript для веба. Фреймворк Flet принципиально меняет этот подход: он позволяет писать полноценные графические приложения исключительно на Python, используя при этом графический движок Flutter для отрисовки нативных виджетов Material Design и Cupertino.

Спустя почти четыре года активной разработки команда проекта объявила о релизе Flet 1.0 и признала фреймворк полностью готовым к созданию коммерческих продуктов (production-ready). Проект распространяется по свободной лицензии Apache 2.0 и уже доступен в репозитории PyPI. Для работы SDK потребуется Python версии 3.10 или новее, а базовая установка выполняется одной командой: pip install 'flet[all]'. Встроенная утилита командной строки flet build умеет формировать готовые дистрибутивы сразу для восьми целевых платформ: Android (в форматах APK и AAB), iOS (включая симулятор и IPA), Windows, macOS, Linux и веб-браузеров.

Матрица тестирования и контроль качества

Стабильность релизной версии Flet 1.0 обеспечивается масштабной системой автоматического тестирования. На стороне Python юнит-тесты фреймворка непрерывно прогоняются на всех поддерживаемых версиях интерпретатора от Python 3.10 до 3.14. Параллельно с этим запускается специальный набор тестов для графической части на стороне Flutter.

Реклама

Особое внимание разработчики уделили интеграционному тестированию пользовательских элементов управления и готовых примеров. В пайплайне проверки сравниваются скриншоты интерфейса, что позволяет своевременно находить не только функциональные баги, но и визуальные регрессии. Тесты бинарных пакетов Python проверяют корректность работы нативных библиотек в среде Android и в симуляторе iOS для версий Python 3.12, 3.13 и 3.14. Команда flet build автоматически проверяет компиляцию проектов под все шесть операционных систем, а утилита flet test разворачивает собранное приложение и выполняет сквозные сценарии на пяти нативных платформах, включая архитектуру Linux ARM64.

Важно то, что разработчики внешних приложений получают в свое распоряжение точно такой же инструментарий. Для собственного проекта можно написать интеграционные тесты с использованием стандартного фреймворка pytest. Запуск тестирования выполняется командой flet test прямо поверх готового скомпилированного дистрибутива с автоматической сверкой эталонных скриншотов на мобильных операционных системах iOS и Android.

Версии Python и экосистема мобильных библиотек

В процессе сборки финального дистрибутива Flet поставляет внутри приложения изолированную среду Python (версий 3.12, 3.13 или 3.14). В случае компиляции под веб-интерфейс применяется соответствующий релиз Pyodide, который исполняет Python-код непосредственно в браузере через WebAssembly. Разработчик может самостоятельно выбирать целевую версию Python в настройках сборки.

Специализированный индекс пакетов Flet на данный момент насчитывает свыше ста популярнейших библиотек, полностью адаптированных под мобильные платформы. В их число входят такие тяжеловесные инструменты для анализа данных и машинного обучения, как NumPy, pandas, Matplotlib, Pillow, SciPy и scikit-learn, а также криптографические модули cryptography и высокопроизводительный валидатор pydantic-core. Автоматизированная система mobile-forge самостоятельно собирает готовые wheel-пакеты и бинарные зависимости под мобильные архитектуры iOS и Android, благодаря чему разработчикам больше не требуется вручную компилировать C-расширения.

Оптимизация производительности и особенности сборки

В версии Flet 1.0 произошел существенный скачок в скорости работы интерфейса. Инженеры переработали механизм сравнения состояний UI (reconciliation): теперь фреймворк отслеживает только изменившиеся свойства виджетов и полностью пропускает лишние операции сравнения. Согласно внутренним тестам производительности, скорость разграничения изменений (control diffing) выросла до 6,7 раза по сравнению с версией 0.83.

В скомпилированных нативных приложениях внедрена технология dart-bridge. Она позволяет средам выполнения Python и Dart взаимодействовать внутри единого операционного процесса без использования сетевых сокетов или локального межпроцессного взаимодействия. Для передачи больших объемов бинарных данных выделены высокоскоростные каналы, что полностью устраняет задержки при обновлении интерфейса. При сборке пакета по умолчанию включается компиляция в байт-код, а обновленный механизм упаковки под Android загружает Python-пакеты напрямую из файла APK без предварительного извлечения на диск устройства.

Декларативный подход к проектированию интерфейса

Фреймворк Flet поддерживает декларативный стиль построения интерфейса (Flet Declarative). В этой парадигме пользовательский интерфейс описывается как чистая функция от текущего состояния приложения, состоящая из переиспользуемых компонентов. К слову, среда разработки Flet Studio и официальное мобильное приложение Flet полностью написаны с использованием именно декларативного подхода.

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

Политика совместимости и интеграция с ИИ

Разработчики Flet 1.0 зафиксировали предсказуемую политику обратной совместимости. Перед полным удалением устаревших API они проходят обязательный этап депрекации, который длится не менее трех минорных релизов. Это дает команде время на плановую адаптацию кодовой базы без неожиданных поломок при обновлениях.

Отдельное внимание в релизе уделено интеграции с искусственным интеллектом. Разработан специализированный MCP-сервер (Model Context Protocol), который передает ИИ-ассистентам (таким как Claude Code, Cursor или GitHub Copilot) точные сведения о текущих API фреймворка, помогает находить нужные иконки, параметры командной строки и примеры кода. Кроме того, веб-версия Flet Studio получила встроенного ИИ-ассистента, способного генерировать интерфейсы по текстовому описанию и экспортировать готовый проект для локальной разработки.

Ключевые итоги релиза Flet 1.0

  • Полноценный релиз: Фреймворк официально вышел в PyPI под лицензией Apache 2.0 и готов для коммерческих продуктов.
  • Широкий охват платформ: Единая команда flet build формирует сборки под 8 целей (Android APK/AAB, iOS/Simulator, Windows, macOS, Linux и Web).
  • Современный стек: Поддержка Python 3.12–3.14, встроенная компиляция Pyodide для веба и более 100 предкомпилированных пакетов (NumPy, SciPy, Pillow).
  • Высокая производительность: Ускорение diffing-алгоритма UI до 6.7 раз и бесшовная связь Python и Dart через dart-bridge без сокетов.
  • Тестирование и ИИ: Встроенный тестовый фреймворк с поддержкой visual regression, а также интеграция с MCP-сервером для AI-помощников.
01.