mafulechka
mafulechkaМаусым 23, 2020, 6:09 Т.Ж.

Flutter және жұмыс үстелі қолданбалары

Компьютерлік технологиядағы үздіксіз прогресс

Жасыратыны жоқ, Flutter әзірлеушілерінің миссиясы - iOS, Android, Windows, Linux, macOS және веб-сайттарды қоса алғанда, құрылғылардың кең ауқымын бір кодтық базадан, жергілікті компиляция және ойын сапасымен көрсету. . Google Flutter Assistant-тен Stadia-ға, Cloud Search-тен Blogger-ке дейінгі жобаларды пайдаланады. Google-дан басқа Flutter-ті Flutter-тің өнімділігі мен икемділігінен пайда көретін ByteDance-тен Grab, Nubank-тен MGM Resorts-қа дейінгі компаниялар қабылдады.


Сіздердің көпшілігіңізді Windows, macOS және Linux қоса, жұмыс үстелі операциялық жүйелеріндегі прогресс қызықтырады. Сауалнамаларда және GitHub жүйесінде жұмыс үстелі ең танымал жаңа мүмкіндіктердің бірі болып табылады. Алдағы апталарда әзірлеушілер өз жұмыстарын көбірек көрсетеді және жалпы жобаға үлес қосатын әртүрлі топтардың кейбір жұмыстарын қарап шығудан бастайды. Жұмыс үстелін қолдау техникалық алдын ала қарау болғанымен, алда әлі көп жұмыс бар.

Шығару режимі

Әзірлеушілер жақында бар macOS қолдауына қосымша Windows және Linux үшін профильді және шығару режимін сынады. Мысалы, егер сіз Flutter бағдарламасының соңғы жинақтарын пайдаланып жатсаңыз, енді Flutter қолданбасын флютер құрастыру терезелері бар Windows орындалатын файлына құрастыра аласыз. Ол Flutter орнатылмаған машинаға таратуға болатын жергілікті x64 төл кодын жасау үшін AOT өндірістік компиляторын пайдаланады.

Жұмыс үстелі

Оқшау орындалатын файлдарды немесе веб-бағдарламаларды жасайсыз ба, сізде жұмыс үстелі қолданбаларын жасау үшін бірегей атрибуттарыңыз болады. Жұмыс үстелінің терезелері әдетте альбомдық режимде болады және өлшемі өзгертіледі, енгізу экрандық пернетақта мен сенсорлық емес, әдетте физикалық пернетақта мен тінтуірден жүзеге асырылады және басқару элементтері әртүрлі экран тығыздықтары үшін оңтайландырылған.

Инфрақұрылым деңгейінде әзірлеушілер жұмыс үстеліндегі өзара әрекеттесуді қолдау үшін Flutter-ге әртүрлі өзгерістер енгізді.

• Жақында құрастырылған жаңа жобаны жасаған кезде, әдепкі үлгіде енді VisualDensity сипатына сілтеме бар екенін көресіз, ол басқару элементтеріне жұмыс үстелі платформаларындағы ықшам ауқыммен мақсатты платформа негізінде олардың тығыздығын бейімдеуге мүмкіндік береді. Бұл қалай қолданылатынының мысалы ретінде берілген тығыздыққа негізделген ықшам, ыңғайлы және стандартты аралықты ұсынатын TextField болып табылады.

• Әзірлеушілер тінтуір мен пернетақтаны енгізу үшін әлдеқайда жақсырақ қолдауды қосты - бұл өңделмеген Windows перне кодтарын, тінтуірдің оң жақ түймешігімен басу, курсорды өзгерту және айналдыру дөңгелегін қолдауды қамтиды.

• Енді арнайы платформаға (Platform сыныбы арқылы) сұрауға болады және Windows, macOS және Linux сәйкес нәтижелерді береді.

• Соңғы шығарылымда әзірлеушілер жұмыс үстелдері мен планшеттер үшін арнайы жасалған NavigationRail виджетін қосты.

ФФИ

Dart командасы платформамен интеграцияны жылдамдатудың тамаша тәсілі болып табылатын шетелдік функция интерфейсін (FFI) жылтырату үшін көп жұмыс жасады. dart:ffi кітапханасына негізделген API интерфейстері үшін жергілікті кодқа байланыстырудың тікелей механизмі қамтамасыз етілген. Dart жұмыс уақыты Dart нысанымен қамтамасыз етілген үймедегі жадты бөлу және динамикалық түрде байланыстырылған кітапханаларға қоңырау шалу мүмкіндігін қамтамасыз етеді.

Қарапайым Windows мысалы үшін Dart коды бар дәстүрлі Win32 MessageBox() API-ге толық қоңырау шалу үшін код үзіндісі берілген:

typedef MessageBoxNative = Int32 Function(
    IntPtr hWnd, Pointer<Utf16> lpText, Pointer<Utf16> lpCaption, Int32 uType);
typedef MessageBoxDart = int Function(
    int hWnd, Pointer<Utf16> lpText, Pointer<Utf16> lpCaption, int uType);

final user32 = DynamicLibrary.open('user32.dll');
final win32MessageBox =
    user32.lookupFunction<MessageBoxNative, MessageBoxDart>('MessageBoxW');

void showMessageBox(String message, String caption) => win32MessageBox(
    0,                      // No owner window
    Utf16.toUtf16(message), // Message
    Utf16.toUtf16(caption), // Window title
    0                       // OK button only
    );

…

showMessageBox('Test Message', 'Window Caption'); // call just like any other Dart function

Dart кодынан Win32 MessageBox API шақыру.

Бұл кодта әзірлеушілер өзінің жергілікті және Dart көріністерінде әдіс қолтаңбасын көрсететін typedef береді. Анықталғаннан кейін Dart функциясының қолтаңбасын негізгі бастапқы енгізу нүктесіне салыстыратын lookupFunction() әдісі арқылы функцияның орындалуын қамтамасыз ететін Windows динамикалық сілтеме кітапханасын (DLL) жүктеуге болады. Соңында, басқа Dart кодынан оңай қол жеткізу үшін қарапайым идиоматикалық қаптаманы қосамыз, нәтижесінде келесідей нәрсе пайда болады:


Win32 MessageBox API қолданатын қарапайым Windows қолданбасының мысалы

Әрине, бұл жұмысты өзіңіз жасаудың қажеті жоқ, мүмкін біреу сіз пайдаланғыңыз келетін API үшін жол ашқан болуы мүмкін.

Плагин үлгісін жаңарту

Флуттердің өзінде шағын өзегі бар. Негізгі платформаға қамқорлық жасаудың орнына, плагиндер мен пакеттер (тікелей Flutter командасынан және үлес қосушылардың кеңірек экожүйесінен) негізгі операциялық жүйелермен интеграцияны қамтамасыз етеді.

Дегенмен, Flutter мобильді құрылғыларды, веб-сайттарды және жұмыс үстелдерін көбірек қолдайтындықтан, әрбір қолдау көрсетілетін платформа үшін плагин әзірлеу қиынға соғады. Сірә, плагин әр платформада тәжірибесі бар әртүрлі авторлардың үлестерін қажет етеді.

Пайдалы әдіс – ортақ интерфейсті әрбір платформа дербес жүзеге асыра алатын негізгі модуль бөлігі ретінде анықтау. Жақында әзірлеушілер көп авторлы платформаны әзірлеуді біріктіруді жеңілдету үшін плагиндерге арналған схеманы бейімдеді. Осы жұмыстың бір бөлігі ретінде енді плагин қандай платформаларға қолдау көрсететінін нақты жариялауға болады.

Әзірлеушілер де осы үлгіні пайдаланып негізгі плагиндердің кейбірін құрастыра бастады, және сіз flutter/plugins репозиторийінде біріктірілген үлгінің кейбір ерте үлгілерін таба аласыз.

Windows және Linux үшін плагин API интерфейстері әлі де қозғалыста екенін ескеріңіз, сондықтан әзірлеушілер барлауды ынталандырғанымен, олар қазіргі уақытта жалпы мақсаттағы қолдауға дайын емес. Олар сонымен қатар pub.dev сайтына жұмыс үстелі платформасының тегтерін қосу үстінде.

Windows жүйесінде жұмыс істейді: Win32 және UWP

Әзірлеушілер Windows жүйесінде жасайтын жұмыстың бір қызықты аспектісі әртүрлі архитектуралық тәсілдермен тәжірибе жасау болып табылады. Кез келген платформада Flutter Unity сияқты ойын қозғалтқыштарына ұқсас тәсілді қолдана отырып, шағын хост контейнері қолданбасына («енгізуші») ендірілген. Бұл платформаға біріктірілген енгізу механизмі кіру нүктесін қамтамасыз етеді, беттерді көрсету, қолжетімділік және негізгі операциялық жүйемен енгізу сияқты қызметтерге қол жеткізуді үйлестіреді және хабарлама оқиғаларының циклін басқарады.

Windows бұл құрылғыны ендіру үшін жасаудың екі түрлі әдісін ұсынады. Біріншіден, жетілген Win32 бағдарламалау үлгісін Flutter мазмұнына кіру нүктесін жасау үшін пайдалануға болады - бұл Windows 7 сияқты платформалармен максималды кері үйлесімділікті қамтамасыз етеді және көптеген әзірлеушілер күтетін стандартты EXE шығарады. Керісінше, заманауи UWP қолданба үлгісі Windows 10 үшін ұсынылған тәсіл болып табылады және Flutter қолдауын Xbox немесе алдағы Windows 10X операциялық жүйесі сияқты құрылғыларға кеңейтудің қызықты мүмкіндіктерін ұсынады.

Әзірлеушілер әртүрлі шешімдерді зерттеу үшін әртүрлі үлескерлермен бейресми түрде жұмыс істейді және жоғары сапалы шешім жасау үшін Microsoft компаниясымен тығыз жұмыс істеуге қуанышты. Олар Android және Windows кіретін Surface құрылғыларының отбасы Microsoft корпорациясына бүкіл портфолиосын қамтитын тамаша жергілікті қолданбаларды жасау үшін тамаша платформа ұсынады деп санайды.

Үстел үстелімен қызық

Бұл жұмыс техникалық шолуда қалады және API мен құралдар әлі тұрақты емес. Әзірлеушілер тұрақты жұмыс үстелі қолдауына, оның ішінде жақсартылған қолжетімділік пен локализация қолдауына көшу алдында орындағысы келетін жұмыстардың көпшілігін қадағалап отырады.

Егер сіз мұны қолданғыңыз келсе, даму арнасында болуыңыз керек. Windows және Linux тек Flutter белсенді түрде дамыған негізгі бөлімшеде қол жетімді. macOS әзірлеуші бөлімінде қол жетімді, ол біршама тұрақты, бірақ өндірісте пайдалану ұсынылмайды. Flutter channel master немесе flutter channel dev көмегімен арналарды ауыстырып, пайдаланып жатқан платформаға қолдау көрсетуді қосу үшін келесі пәрмендердің бірін пайдалануға болады:

C:\flutter> flutter config --enable-windows-desktop$ flutter конфигурациясы --enable-macos-desktop$ flutter конфигурациясы --enable-linux-desktop

Әзірлеушілер кейбір шытырманды әзірлеушілердің қолданбаларды жасау үшін жұмыс үстелінде Flutter қолданбасын пайдалана бастағанын көрді. Олар көрген алғашқы Flutter macOS жұмыс үстелі қолданбаларының бірі Sharezone болды. Неміс білім беру нарығына бағытталған студенттік жоспарлаушы, оны мобильді қолданба ретінде бастаған, бірақ жақында веб және жұмыс үстелі нұсқаларын қосқан.

Sharezone Schulplan - бұл үй тапсырмасын, оқу топтарын және кестелерді қадағалайтын студенттерге, мұғалімдерге және ата-аналарға арналған қолданба.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз