Flutter на Python

от автора

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

Недавно совершенно случайно наткнулся на Ютубе на ролик от индусских братьев, в котором рассказывали, о неком фреймворке под названием Flet. Что это такое?

Flet

Flet — фреймворк, предоставляющий Flutter компоненты для разработки кроссплатформенных приложений на вашем любимом языке программирования Python (разработчики обещают расширять список поддерживаемых языков).

Как это работает?

Flet не использует какие-то SDK, не компилирует код Python в код Dart и весь UI отображается с помощью встроенного Web сервера. Да, это Flutter Web.

Режимы запуска приложения

Как я уже говорил выше, Flet имеет собственный Web сервер, но по умолчанию ваше приложение запускается в нативном окне операционной системы. Например, вот так выглядит программа, написаная на Flet в стандартном режиме запуска:

 flet.app(target=main) 

Для того, чтобы отобразить приложение в текущем браузере ОС, нужно воспользоваться командой запуска приложения, но с параметром view:

 flet.app(target=main, view=flet.WEB_BROWSER) 

На мобильных устройствах приложение распространяется как Progressive Web App (PWA). Пообщавшись с разработчиками Flet в Twitter, я понял, что они работают над собственной реализацией запуска приложения на мобильных платформах. На desktop же мы по прежнему можем использовать старый добрый PyInstaller.

Установка

Установка фреймворка Flet происходит в одну команду:

pip install flet

Несколько примеров из документации Flet

import flet from flet import (     AppBar,     Icon,     IconButton,     Page,     PopupMenuButton,     PopupMenuItem,     Text,     colors,     icons, )   def main(page: Page):     def check_item_clicked(e):         e.control.checked = not e.control.checked         page.update()      page.appbar = AppBar(         leading=Icon(icons.PALETTE),         leading_width=40,         title=Text("AppBar Example"),         center_title=False,         bgcolor=colors.SURFACE_VARIANT,         actions=[             IconButton(icons.WB_SUNNY_OUTLINED),             IconButton(icons.FILTER_3),             PopupMenuButton(                 items=[                     PopupMenuItem(text="Item 1"),                     PopupMenuItem(),  # divider                     PopupMenuItem(                         text="Checked item",                         checked=False,                         on_click=check_item_clicked                     ),                 ]             ),         ],     )     page.add(Text("Body!"))   flet.app(target=main) 

Результат выполнения кода:

Кстати, запускается приложение очень быстро:

Компоненты ввода

import flet from flet import ElevatedButton, Page, Text, TextField, icons   def main(page: Page):     def button_clicked(e):         t.value = (             f"Textboxes values are:  "             f"'{tb1.value}', "             f"'{tb2.value}', "             f"'{tb3.value}', "             f"'{tb4.value}', "             f"'{tb5.value}'."         )         page.update()      t = Text()     tb1 = TextField(label="Standard")     tb2 = TextField(label="Disabled", disabled=True, value="First name")     tb3 = TextField(label="Read-only", read_only=True, value="Last name")     tb4 = TextField(label="With placeholder", hint_text="Please enter text here")     tb5 = TextField(label="With an icon", icon=icons.EMOJI_EMOTIONS)     b = ElevatedButton(text="Submit", on_click=button_clicked)     page.add(tb1, tb2, tb3, tb4, tb5, b, t)   flet.app(target=main) 

Flet предоставляет многие базовые виджеты для создания приложения. Детально я с ним не работал, поэтому подробнее сказать не могу. Фреймворк молодой, но определенно стоит того, чтобы попробовать его. Извиняюсь за столь короткий обзор, я просто хотел рассказать о существовании данной технологии. Возможно, кто-то заинтересуется и напишет более расширенный обзор. Спасибо за внимание!

Репозиторий Flet
Официальная документация


ссылка на оригинал статьи https://habr.com/ru/post/677734/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *