副標題:Ubuntu團隊已經爲全部Linux發行版上的Flutter應用程序製做了一個新的基於GTK+的主機。html
原文地址:medium.com/flutter/ann…linux
原文做者:medium.com/@csellsandroid
發佈時間:2020年7月8日git
做者:Chris Sells (Google) & Ken VanDine (Canonical)github
Google對Flutter的目標一直是提供一個可移植的工具包,用於構建以原生速度運行的漂亮UI,不管你的目標是哪一個平臺。爲了驗證這一能力,咱們首先關注移動平臺Android和iOS,在這兩個平臺上,咱們已經看到有超過8萬個快速、漂亮的Flutter應用發佈到Google Play。shell
爲了在這一成功的基礎上再接再礪,一年多來,咱們一直在將咱們的關注點擴展到包括桌面級體驗,包括網絡和桌面操做系統:macOS、Windows和Linux。這項工做包括對引擎進行大量重構,以支持桌面風格的鼠標和鍵盤輸入,以及可調整大小的頂層窗口。它還包括新的UI功能,能很好地適應桌面,如Material Density支持和NavigationRail,以及在Dart:FFI中的實驗和對系統菜單欄和標準對話框的訪問,與底層桌面操做系統深度集成的實驗。全部這些工做都是爲了確保Flutter除了適合移動風格的體驗外,還能處理全功能、全尺寸的桌面應用。ubuntu
長期以來,咱們的願景是讓Flutter爲平臺提供動力。咱們已經看到這一點在谷歌經過Assistant等產品體現出來,因此如今咱們很高興看到其餘人利用Flutter爲更多平臺提供動力。今天,咱們很高興與世界上最流行的桌面Linux發行版Ubuntu的發行商Canonical一塊兒,共同宣佈Flutter的Linux alpha的可用性。小程序
去年,當Google宣佈用Flutter支持桌面級應用時,Canonical看到了一個使人興奮的機會,使包括Ubuntu在內的Linux發行版成爲對Flutter應用開發者有吸引力的目標平臺。Flutter的原生跨平臺故事正在迅速發展,Canonical但願成爲先鋒。經過在Flutter中實現對桌面Linux的支持,Canonical讓應用開發者能夠很是容易地經過Linux的應用商店Snap Store爲Linux用戶發佈應用。經過使Linux成爲一流的Flutter平臺,Canonical正在邀請應用開發者向數百萬Linux用戶發佈他們的應用,並擴大向他們提供高質量的應用。api
關於Flutter的一些事情讓Canonical感到興奮。瀏覽器
谷歌最初宣佈宣佈支持Flutter桌面,首先是支持macOS的alpha版本,並計劃支持Linux和Windows。Canonical對Flutter進行了大量投資,專門成立了一個開發者團隊,與谷歌的開發者一塊兒爲大多數Linux發行版帶來最佳的Flutter體驗。Canonical將繼續與谷歌合做,進一步完善對Linux的支持,並保持與其餘支持平臺的功能對等。
爲了證實Flutter已經爲桌面作好了準備,咱們與gskinner的設計師和開發人員合做,建立了一個創新的、漂亮的Flutter桌面應用。Flokk是一個現實世界的應用,它可使用現實世界的數據,特別是你的谷歌聯繫人列表。
視頻:將 Flutter 帶到 Linux。Flokk聯繫人
除了可以管理你的聯繫人,包括搜索聯繫人、添加新的聯繫人和編輯現有的聯繫人,Flokk還可讓你將GitHub和Twitter的手柄信息與你的聯繫人關聯起來。
Flokk通信錄應用是用Flutter打造的,針對的是桌面。
GitHub和Twitter通知的顯示,將你的聯繫人變成了你本身的我的社交網絡。若是你在Flokk Contacts中沒有看到你喜歡的社交網絡,那麼好消息是Flokk是徹底開源的,因此你能夠提交PR來添加你的收藏夾。
除了在社交領域的創新,Flokk還使用Flutter功能,讓人看起來感受很好。僅舉一例,深色主題不只能夠切換顏色,並且在切換時還會有動畫變化。
Flutter使Flokk可以利用流暢的動畫、高性能的滾動和簡單的主題。
Flokk Contacts應用背後的創意團隊是由Grant Skinner領導的,他以卓越的設計和創新用戶體驗的實現而聞名。對於在Linux上與Flutter的合做,Grant這樣說。
"構建Flokk Contacts應用是一件垂手可得的事情! 咱們可以將咱們以前在Flutter方面的全部專業知識應用到Linux上,幾乎沒有任何調整,應用程序運行得很是好。與Canonical團隊合做是一次美妙的經歷;他們熱情、投入,而且熱衷於讓Flutter不只適用於Linux,並且適用於每一個平臺。這是一個了不得的項目,我很高興可以用Flutter瞄準另外一個主要的操做系統。" - Grant Skinner
若是你想在Linux機器上使用Flokk應用,你能夠在GitHub上下載最新版本。或者,若是你正在運行snapd,你能夠從Snap Store下載Flokk應用。
如今你已經看到了Flutter對於桌面級應用的工做效果,尤爲是在Linux上,你會想讓它在本身的Linux機器上運行。爲了使這一點儘量的簡單,咱們很高興在Snap Store中提供Flutter SDK for Linux做爲Snap。Flutter SDK snap提供了在您最喜歡的Linux發行版上開發Flutter應用程序所需的一切。不須要安裝一堆開發依賴;只需安裝Flutter SDK snap和您最喜歡的IDE,您就擁有了爲Linux建立、構建和發佈應用程序所需的一切。
例如,若是你想開始爲Linux開發Flutter應用程序,而你選擇的IDE是Visual Studio Code,這就是你在Linux終端須要作的一切。
$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter。
複製代碼
若是你也想使用Linux開發移動應用,你能夠經過安裝Android SDK或Android Studio(其中包括Android SDK)來實現。有關Flutter SDK做爲快件的更多信息,請參閱 snapcraft.io/flutter 。
一旦在Linux機器上安裝了Flutter SDK,要構建桌面應用就須要升級到Flutter dev或master通道。而後啓用Linux桌面支持。 啓用Linux桌面支持:
$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop
複製代碼
如今,當你建立一個新的Flutter項目時,你會獲得一個linux子目錄,讓你在Linux桌面上運行應用程序。
$ flutter create counter
$ cd counter
$ flutter run -d linux
複製代碼
著名的Flutter Counter應用也能在Linux上運行得很好。
你將獲得的是一個用Flutter構建的、運行在最新穩定版GTK+上的閃亮的新Linux
應用。若是你有一個現有的Flutter項目,你想在啓用Linux後添加Linux支持,你能夠像這樣添加linux子目錄。
$ cd my_flutter_app
$ flutter create .
複製代碼
這將建立linux
子目錄與Runner項目,你須要在Linux桌面上構建和運行你的Flutter應用程序。
除了經過編寫Dart建立Flutter小部件來支持桌面外,你的Linux桌面應用程序還可使用平臺通道或C/C++的Dart外函數接口來訪問全部的原生Linux。或者,若是你想重用已有的代碼,你能夠在 pub.dev,Dart 和 Flutter 的包管理器網站上找到這些代碼。在pub.dev上,你會發現大部分的包都是純Dart的,其中大部分在Linux應用中工做得很好。有些包,被稱爲插件,其中有針對一個或多個平臺的本地代碼。做爲這次發佈的一部分,咱們在 pub.dev 上發佈了三個使用 Linux 本地功能的插件。
這些插件中的每個均可以供你在你的應用程序中使用,以及做爲如何從你的Flutter代碼中原生地訪問Linux的一個例子,好比url_launcher的Linux實現。
要將你的Flutter應用部署到Snap Store,你首先須要安裝Snapcraft,這個工具你將用來構建和發佈你的應用做爲一個快照。
$ sudo snap install snapcraft --classic
複製代碼
要驅動Snapcraft工具,你須要在你的應用程序的項目目錄下建立一個snapcraft.yaml
文件。做爲一個例子,這是Flokk的snapcraft.yaml
文件。
name: flokk-contacts
version: 1.0.1
summary: Flokk Contacts
description: A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.
confinement: strict
base: core18
grade: stable
apps:
flokk-contacts:
command: flokk-contacts
extensions: [flutter-master]
plugs:
- network
parts:
flokk-contacts:
source: .
plugin: flutter
flutter-target: lib/main.dart # 應用程序的主入口點文件。
複製代碼
在你的snapcraft.yaml
文件所在的目錄下,你如今能夠運行snapcraft來構建你的應用程序的snap。
$ snapcraft
複製代碼
若是一切順利,這將在你當前的工做目錄下生成一個文件,好比flokk-contacts_1.0.1_amd64.snap
。 一旦你在Snap Store中設置了發佈帳戶,你就能夠發佈你的snap了。
$ snapcraft登陸
$ snapcraft register flokk-contacts.
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge
複製代碼
該命令將把應用程序上傳到Snap Store,並嘗試將其發佈到邊緣通道中。一旦您的應用程序發佈到邊緣通道,就能夠經過Snap Store桌面客戶端或使用命令行進行安裝。
$ snap install --edge flokk-contacts
複製代碼
有關構建你的第一個快照並在Snap Store中發佈的更多細節,請參見 snapcraft.io/first-snap#… ,獲取指導教程。
Flokk應用是一個針對Linux桌面的現實世界Flutter應用的優秀例子。若是想了解更簡單的示例,你能夠看看照片搜索應用,它也是專門爲展現桌面功能而打造的。
嘗試Linux上的照片搜索示例
照片搜索是一款簡單的在線照片搜索應用,它使用多個插件來接入原平生臺功能,支持macOS和Linux。
若是想了解一個Linux桌面應用的例子,並有一步一步的說明,我推薦《編寫一個Flutter桌面應用》codelab,它指導你使用OAuth和GraphQL在Flutter中構建一個GitHub客戶端。
Flutter的GitHub codelab客戶端應用在行動中。
對於一個更全面的應用,能夠鍛鍊Flutter更多的表面積,以及提供幾個小程序,我推薦Flutter Gallery,它是去年從新設計的,支持桌面以及手機。若是你想看看它的運行狀況,你也能夠在Snap Store上查看。
Flutter Gallary樣品可在Snap商店購買
又有一款桌面應用展示了Flutter有趣的一面,它是由Thorsten Lorenz打造的一款名爲batufo的多人遊戲。這款遊戲以美麗的背景爲背景,讓來自世界各地的玩家實時對戰。
在多個Flutter平臺上實時播放
Thorsten一直在構建這個遊戲,以支持多個Flutter平臺,包括Linux,macOS,Android和iOS。若是你想看看他是如何作到的,並跟隨將來的更新,他將他的編碼課程以視頻的形式提供,代碼也能夠在GitHub上得到。若是要從Linux上安裝遊戲,你能夠從Snap Store上把它拉下來。
經過這個alpha版本以及Google和Canonical之間的緊密合做,Linux開發者能夠爲他們選擇的操做系統得到Flutter支持。經過快照安裝Flutter SDK。使用Visual Studio Code或Android Studio在Linux上構建和測試你的桌面應用。將您的應用部署到Snap Store。最新的細節,請看flutter.dev上的桌面頁面。最重要的是,必定要提供反饋,這樣咱們才能繼續讓Flutter在Linux上作到最好,就像咱們努力爲每一個支持的Flutter平臺作的那樣。
來自Canonical團隊的Flutter for Linux是咱們的夢想向前邁出的一大步,讓Flutter成爲構建應用的最佳方式,不管你的目標是哪一個平臺。針對桌面平臺,使得Flutter引擎對谷歌自己沒法直接支持的長尾設備的適應性更強,但咱們計劃繼續爲這些設備創建合做夥伴關係,並啓用生態系統。
只要有設備須要快速、漂亮的應用,那就是咱們但願Flutter出現的地方。
經過www.DeepL.com/Translator(免費版)翻譯