精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
谷歌發(fā)布Flutter Alpha:支持Windows

老孟導(dǎo)讀:Windows來了,Mac、Linux、Web還遠(yuǎn)嗎?

本文翻譯自medium.com/flutter/ann…

我們的使命是為開發(fā)人員提供一個(gè)開源,高生產(chǎn)率的框架,以便在任何平臺(tái)上構(gòu)建漂亮的本機(jī)應(yīng)用程序。到目前為止,我們已經(jīng)為Android和iOS提供了正式版本(stable releases),僅Google Play商店就提供了8個(gè)穩(wěn)定版本和100,000多個(gè)應(yīng)用。我們將繼續(xù)擴(kuò)大關(guān)注范圍,包括Web,macOS和Linux等其他平臺(tái)。今天,我們很高興地宣布Flutter的另一個(gè)目標(biāo),即Flutter對(duì)Windows的Alpha版本的支持。

Windows仍然是臺(tái)式機(jī)和筆記本電腦設(shè)備的流行選擇,Microsoft報(bào)告了超過十億臺(tái)運(yùn)行Windows 10的活動(dòng)設(shè)備。我們自己的統(tǒng)計(jì)數(shù)據(jù)顯示,所有Flutter開發(fā)人員中有超過一半使用Windows,因此,它自然Flutter是的目標(biāo)。本地桌面支持為Flutter開辟了許多激動(dòng)人心的可能性,包括改進(jìn)的開發(fā)人員工具,減少了新用戶的負(fù)擔(dān),當(dāng)然,應(yīng)用程序可以通過單個(gè)代碼庫訪問用戶可能擁有的任何設(shè)備。

將Windows添加到Flutter

如我們的架構(gòu)概述中所述Flutter是一種跨平臺(tái)的UI工具包,旨在允許在iOS和Android等操作系統(tǒng)之間重復(fù)使用代碼,同時(shí)還允許應(yīng)用程序直接與基礎(chǔ)平臺(tái)服務(wù)交互。目的是使開發(fā)人員能夠交付在不同平臺(tái)上感覺自然的高性能應(yīng)用程序,在存在盡可能多的代碼的同時(shí),擁抱它們存在的差異。Flutter的核心是引擎,它支持所有Flutter應(yīng)用程序所必需的。每當(dāng)需要繪制新框架時(shí),引擎負(fù)責(zé)對(duì)合成場景進(jìn)行柵格化。它提供Flutter核心API的低級(jí)實(shí)現(xiàn),包括圖形,文本布局,文件和網(wǎng)絡(luò)I / O,可訪問性支持,插件體系結(jié)構(gòu)以及Dart運(yùn)行時(shí)和編譯工具鏈。

我們添加到Flutter的每個(gè)新平臺(tái)都會(huì)通過新服務(wù)擴(kuò)展核心框架,使其能夠在該平臺(tái)上發(fā)光。我們從使用Material Design以及基于觸摸的,以移動(dòng)設(shè)備為中心的用戶界面開始在Android和iOS上開始,該界面旨在在兩個(gè)移動(dòng)平臺(tái)上都達(dá)到像素完美。通過Web,Windows,macOS和Linux添加對(duì)臺(tái)式機(jī)外形的支持,帶來了一整套全新的服務(wù),其中包括對(duì)輸入側(cè)的鍵盤,鼠標(biāo),鼠標(biāo)滾輪和控制器的強(qiáng)大支持,以及在這些方面適應(yīng)甚至工作得最好的小部件。 Web和桌面應(yīng)用程序隨附的更大的屏幕尺寸。

此外,每個(gè)新平臺(tái)不僅會(huì)影響Flutter框架和引擎,還會(huì)影響很多其他方面:

  • 工具鏈更新:向CLI和IDE工具添加新目標(biāo)(在本例中為Windows)
  • Shell:支持通過WM_*消息處理Windows的輸入和通過ANGLE的輸出,使用斯基亞(Skia)以本機(jī)速度渲染到底層DirectX表面
  • Runner:每個(gè)項(xiàng)目都會(huì)獲得針對(duì)受支持目標(biāo)的Shell應(yīng)用程序。對(duì)于Windows,這是一個(gè)Win32 / C ++程序,可加載Flutter代碼并在運(yùn)行時(shí)執(zhí)行它。如果需要,可以在此處向應(yīng)用程序添加本機(jī)代碼。
  • 插件:插件是Dart代碼和該插件支持的每個(gè)平臺(tái)的本機(jī)代碼的混合。需要為在Windows上Flutter應(yīng)用程序中編譯的每個(gè)插件添加該本地代碼。

此Alpha版本提供了堅(jiān)實(shí)的基礎(chǔ),我們將在未來幾個(gè)月中穩(wěn)定該基礎(chǔ)。借助對(duì)Windows 7及更高版本的支持,我們希望這可以為喜歡冒險(xiǎn)的開發(fā)人員提供一些入門知識(shí)。

探索一些示例應(yīng)用

要查看Flutter對(duì)Windows的支持,您可能想嘗試一些我們創(chuàng)建的示例應(yīng)用程序,這些應(yīng)用程序在Windows上使用我們新增的支持可以很好地運(yùn)行。第一個(gè)是Flokk應(yīng)用程序,它是與gskinner.com的設(shè)計(jì)師和開發(fā)人員共同創(chuàng)建的。目的是通過創(chuàng)建創(chuàng)新的,精美的Flutter桌面應(yīng)用程序來證明Flutter已準(zhǔn)備好用于桌面。Flokk是一款可與您的真實(shí)Google Contacts數(shù)據(jù)配合使用并在GitHub和Twitter上顯示聯(lián)系人活動(dòng)的應(yīng)用程序。

如果您想在Windows機(jī)器上使用Flokk應(yīng)用程序,則可以在GitHub上下載最新版本。如果您想了解gskinner如何構(gòu)建此應(yīng)用程序,請(qǐng)參閱其出色的博客文章:Flokk-我們?nèi)绾问褂肍lutter構(gòu)建桌面應(yīng)用程序

此外,F(xiàn)lutter Gallery應(yīng)用程序(我們用于Flutter的所有事物的展示應(yīng)用程序)最近已完全重寫,以增加對(duì)臺(tái)式機(jī)尺寸的支持。這使我們能夠檢查它是否可以在Web以及Windows,macOS和Linux上正常運(yùn)行。

庫中的許多研究都展示了在使用Flutter設(shè)計(jì)自己的Windows應(yīng)用程序時(shí)建議使用的不同應(yīng)用程序風(fēng)格的想法。當(dāng)您找到自己喜歡的東西時(shí),該代碼可在GitHub上找到

Flutter for Windows入門

根據(jù)Windows安裝說明開始安裝Flutter SDK 。要定位Windows桌面,首先需要安裝Desktop docs中描述的工具。默認(rèn)情況下,F(xiàn)lutter假定您正在構(gòu)建生產(chǎn)軟件,并且未配置為開發(fā)Windows應(yīng)用程序。但是,可以從命令行輕松解決:

$ flutter channel dev$ flutter upgrade$ flutter config --enable-windows-desktop復(fù)制代碼

第一條命令將Flutter設(shè)置為使用實(shí)驗(yàn)質(zhì)量的“ dev”通道(而不是默認(rèn)的“ stable”通道)。這樣,您就可以使用仍在Alpha中的平臺(tái)支持,例如Windows。第二條命令下拉該通道上的最新位。第三個(gè)命令可在您的PC上進(jìn)行Windows應(yīng)用開發(fā)。

設(shè)置好之后,每次使用Android StudioVisual Studio Code的擴(kuò)展支持,或者從命令行創(chuàng)建新的Flutter應(yīng)用程序時(shí),它都會(huì)創(chuàng)建一個(gè)Windows子文件夾。

如果您感到好奇,請(qǐng)?jiān)赪indows上運(yùn)行默認(rèn)應(yīng)用程序,如下所示:

最后,一旦創(chuàng)建了應(yīng)用程序,構(gòu)建該應(yīng)用程序?qū)?chuàng)建一個(gè)發(fā)布模式的本機(jī)EXE文件以及必要的支持DLL。到那時(shí),如果您想嘗試在任何Windows 10計(jì)算機(jī)上運(yùn)行新的Windows應(yīng)用程序,即使沒有安裝Flutter的計(jì)算機(jī),也可以按照以下步驟壓縮必要的文件并運(yùn)行。

Windows插件

即使我們剛剛發(fā)布Alpha版,F(xiàn)lutter社區(qū)也已經(jīng)在為Windows插件進(jìn)行開發(fā)。這里有一些:

  • url_launcher:從您的應(yīng)用程序在瀏覽器中啟動(dòng)URL
  • path_provider:在用戶的機(jī)器上找到指向特殊方向的路徑,例如Document或temp
  • shared_preferences:保持用戶首選項(xiàng)在應(yīng)用程序會(huì)話之間的磁盤上序列化
  • biometric_storage:通過生物識(shí)別技術(shù)加密的存儲(chǔ)
  • flutter_audio_desktop:從桌面應(yīng)用播放音頻

使用這些插件的好處是它們中的大多數(shù)還支持其他Flutter平臺(tái),這使您可以將應(yīng)用定位到Android,iOS,Web等以及Windows。此外,雖然pub.dev(Dart和Flutter的軟件包管理器)上約有三分之一的可用軟件包是具有特定于平臺(tái)的代碼的插件,但大多數(shù)不是。例如,許多最高質(zhì)量和最常用的軟件包是Flutter Favorite程序的一部分,并且大多數(shù)都在Windows上運(yùn)行。如果要查看在Windows上運(yùn)行的軟件包的完整列表,可以在pub.dev上運(yùn)行此查詢

與Windows互操作

如果您想為Windows構(gòu)建自己的插件,則可以。進(jìn)入開發(fā)人員通道并為計(jì)算機(jī)啟用Windows后,可以使用以下命令開始:

$ flutter create --template plugin --platforms Windows hello_plugin復(fù)制代碼

屆時(shí),您將能夠在插件項(xiàng)目中將Flutter代碼添加到lib子文件夾中,并將Windows代碼添加到windows子文件夾中。您將使用Platform Channels在兩個(gè)堆棧之間進(jìn)行通信,這實(shí)際上是Dart和C ++代碼之間傳遞的消息。有關(guān)此示例的精心制作,請(qǐng)參見url_launcher實(shí)現(xiàn)

但是,平臺(tái)通道并不是與Windows互操作的唯一選擇。如果愿意,可以使用Dart FFI(外部功能接口)加載庫并調(diào)用C樣式的API,例如Win32 API。與使用平臺(tái)通道的url_launcher不同,path_provider插件是使用FFI實(shí)現(xiàn)的,如您在GitHub repo中所見。FFI無需在Dart和C ++之間來回切換,而是允許您編寫代碼以直接導(dǎo)入所需的API。例如,以下是用于調(diào)用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  );...// call just like any other Dart functionshowMessageBox('Test Message', 'Window Caption');view rawmbox.dart hosted with ? by GitHub復(fù)制代碼

此代碼不會(huì)產(chǎn)生在平臺(tái)通道之類的兩個(gè)線程之間進(jìn)行轉(zhuǎn)換的開銷。FFI包括對(duì)許多不同種類的API的支持,包括Win32,WinRT和COM。但是,在運(yùn)行并包裝整個(gè)基于C的Windows API之前,請(qǐng)檢查win32插件,該插件已經(jīng)可以很好地做到這一點(diǎn)。實(shí)際上,path_provider插件本身是使用win32插件實(shí)現(xiàn)的。有關(guān)win32插件如何開發(fā)以及如何工作的詳細(xì)信息,請(qǐng)查看博客文章Dart FFI的Windows樂趣

Windows資源Flutter

無論您在Flutter for Windows之旅中的任何地方,都應(yīng)確保閱讀flutter.dev上的桌面文檔,其中包括最新詳細(xì)信息。另外,您將需要熟悉 Flutter代碼實(shí)驗(yàn)室,以編寫Windows,macOS和Windows桌面目標(biāo)應(yīng)用程序,其中包括用于真實(shí)場景的代碼,例如使用OAuth進(jìn)行身份驗(yàn)證,訪問GitHub API和使用GraphQL。或者,對(duì)于在Windows上運(yùn)行的Flutter桌面代碼的另一個(gè)很好的例子,請(qǐng)查看照片搜索示例

它使用標(biāo)準(zhǔn)的Windows文件打開對(duì)話框,樹視圖小部件,拆分器小部件,并將結(jié)果與真實(shí)世界的REST API集成在一起。

對(duì)于其他有用的面向桌面的小部件,我們建議使用菜單欄插件NavigationRail小部件DataTable小部件。您可能還對(duì)InteractiveViewer小部件感興趣,該小部件具有完整的桌面支持,可通過鼠標(biāo)手勢來平移和縮放子小部件。

可以探索的另一組有用的小部件是SyncFusion中的那些,它們已經(jīng)在Windows開發(fā)社區(qū)中廣為人知。它們提供了廣泛的企業(yè)質(zhì)量小部件,用于創(chuàng)建圖表,儀表,數(shù)據(jù)網(wǎng)格等。

這些小部件具有社區(qū)和企業(yè)許可證,因此您可以找到最適合您的項(xiàng)目的工具。

適用于Windows的Flutter

除了Windows(通常是Flutter桌面)的軟件包和插件外,F(xiàn)lutter開發(fā)人員還一直在開發(fā)針對(duì)Windows的出色應(yīng)用,例如Invoice Ninja的實(shí)驗(yàn)性構(gòu)建:

Invoice Ninja是一家依靠Flutter帶來收入的發(fā)票公司。他們的目標(biāo)是今天生產(chǎn)中的Android和iOS,并具有基于Web的演示供您嘗試,但也期待提供桌面版本。

“在過去的Ninja中,我們一直在努力僅支持Web和移動(dòng)設(shè)備,一次只能維護(hù)三個(gè)單獨(dú)的代碼庫。借助Flutter,以及最近的Flutter Desktop,我們已經(jīng)能夠使用單個(gè)代碼庫為每個(gè)主要平臺(tái)構(gòu)建應(yīng)用程序。我們不僅可以從根本上獲得應(yīng)用程序的免費(fèi)桌面版本,而且還擁有所有應(yīng)用程序中最好的性能!”

—Invoice Ninja 聯(lián)合創(chuàng)始人Hillel Coren

如果您對(duì)實(shí)現(xiàn)可在移動(dòng)和臺(tái)式機(jī)上運(yùn)行的現(xiàn)實(shí)世界中可產(chǎn)生收入的Flutter應(yīng)用感興趣,則可在GitHub上找到源代碼

Aartos是另一家制造出色產(chǎn)品的公司,其中包括帶有Flutter編寫的具有多平臺(tái)客戶端的實(shí)時(shí)無人機(jī)檢測系統(tǒng)。這是在移動(dòng)客戶端旁邊運(yùn)行的Windows客戶端的早期版本:

視頻地址:youtu.be/mGvPCT7Vc2Y

這兩個(gè)針對(duì)iOS和Windows的版本共享完全相同的代碼庫。

如果您是經(jīng)驗(yàn)豐富的Flutter開發(fā)人員,并且發(fā)現(xiàn)自己在Flutter的不同版本之間進(jìn)行切換;例如,一個(gè)版本用于交付生產(chǎn)型移動(dòng)應(yīng)用程序,另一個(gè)版本用于測試Windows alpha,那么您可能會(huì)喜歡Flutter版本管理器,該版本管理器現(xiàn)在帶有Windows GUI,您可以下載該版本

視頻地址:youtu.be/_WA71wSt2ww

該工具是開源的,因此您可以親自了解Leo如何使其看起來如此出色。

下一步是什么

現(xiàn)在,我們已經(jīng)發(fā)布了Alpha版,我們的注意力轉(zhuǎn)移到完成功能集和穩(wěn)定產(chǎn)品的發(fā)布上。作為一個(gè)開源項(xiàng)目,您可以在GitHub網(wǎng)站上關(guān)注我們的beta測試進(jìn)展,尚需完成的其他工作包括可訪問性,全球化和本地化,增強(qiáng)的鍵盤和文本處理,對(duì)命令行參數(shù)的支持等等。

除了支持經(jīng)典的Win32 API外,我們還在試驗(yàn)基于UWP的Flutter shell版本,該版本使Flutter可以訪問更廣泛的基于Windows的設(shè)備,包括Xbox。作為該實(shí)驗(yàn)的一部分,本周我們向Windows應(yīng)用商店發(fā)布了基于UWP的Flutter Gallery版本。

以下屏幕快照顯示了在Xbox上運(yùn)行的基于UWP的Flutter Gallery:

這是在Windows 10X模擬器上運(yùn)行的雙屏Windows設(shè)備上運(yùn)行的同一應(yīng)用程序

您可以在GitHub上了解有關(guān)Flutter for UWP的進(jìn)度的更多信息

摘要

在此版本中,我們將Flutter的功能引入Windows,它具有聲明式,可組合的,反應(yīng)式的框架,可提高開發(fā)人員的工作效率,并具有適應(yīng)性的Material規(guī)范實(shí)現(xiàn),因此您還可以使應(yīng)用外觀和感覺達(dá)到您希望的方式作為Flutter的全套開發(fā)和調(diào)試工具。完成后,您的應(yīng)用程序?qū)⒕幾g為本機(jī)64位代碼,您可以將其打包并帶到其他Windows計(jì)算機(jī)上,就像其他任何本機(jī)應(yīng)用程序一樣。最后,您可以使用相同的代碼庫來創(chuàng)建針對(duì)Android,iOS,Web,macOS和Linux的應(yīng)用程序。

如果您想開始使用Flutter構(gòu)建Windows應(yīng)用程序,我們希望收到您的反饋!如果您希望利用Windows的專業(yè)知識(shí)來構(gòu)建流行插件的Windows實(shí)現(xiàn),或者為Flutter構(gòu)建一些以Windows為中心的工具(也許是一個(gè)CLI,它可以從flutter build windows命令的輸出中創(chuàng)建MSIX ……),那也歡迎您!

有了Flutter對(duì)Windows的新支持,您將要構(gòu)建什么?

版權(quán)聲明:本文為原創(chuàng),依據(jù) CC BY-SA 4.0 許可證進(jìn)行授權(quán),轉(zhuǎn)載請(qǐng)附上出處鏈接及本聲明。

`

交流

老孟Flutter博客(330個(gè)控件用法+實(shí)戰(zhàn)入門系列文章):laomengit.com

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Flutter 3.0 重磅發(fā)布,橫跨iOS、Android、Windows等六大平臺(tái)
如何在使用 Flutter時(shí)切換應(yīng)用時(shí)隱藏應(yīng)用預(yù)覽
2020年,一文點(diǎn)破跨平臺(tái)開發(fā)框架現(xiàn)狀
將 75000 行原生 iOS 應(yīng)用程序移植到 Flutter 后,結(jié)果太驚訝!
五大跨平臺(tái)應(yīng)用開發(fā)框架:React、Flutter、Xamarin等
程序猿必備的10個(gè)移動(dòng)開發(fā)工具
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 长宁区| 河曲县| 临清市| 永德县| 和田县| 玛纳斯县| 资源县| 武胜县| 双城市| 四会市| 兴业县| 方山县| 巴青县| 灵石县| 郯城县| 长武县| 苏尼特左旗| 大连市| 杨浦区| 望奎县| 上栗县| 汉寿县| 绿春县| 金昌市| 孝义市| 巴马| 武邑县| 锡林郭勒盟| 井陉县| 连云港市| 灌阳县| 柘荣县| 瑞昌市| 财经| 房山区| 澳门| 鹤庆县| 营山县| 凤山市| 墨竹工卡县| 台湾省|