Canonical通過Flutter啟用Linux桌面應用程式支援

老孟Flutter發表於2020-07-10

Canonical通過Flutter啟用Linux桌面應用程式支援

子標題:Ubuntu團隊為所有Linux發行版上的Flutter應用程式製作了一個新的基於GTK +的主機。

此文翻譯自:https://medium.com/flutter/announcing-flutter-linux-alpha-with-canonical-19eb824590a9

作者:克里斯·塞爾斯(Chris Sells)(Google)和肯·範丁(Ken VanDine)(Canonical)

Google 對 Flutter 的目標一直是提供一個可移植的工具包,以構建媲美本機速度執行的精美UI,無論您使用的是哪個平臺。為了驗證該功能,我們首先關注於Android和iOS移動平臺,我們已經在Google Play上看到了8萬多個快速,精美的Flutter應用程式。

為了獲得成功,一年多來,我們一直將重點擴充套件到包括桌面級體驗,包括針對Web和桌面作業系統(macOS,Windows和Linux)的體驗。這項工作包括對引擎進行廣泛的重構,以支援桌面樣式的滑鼠和鍵盤輸入,以及可調整大小的頂級視窗。它還包括新的UI功能,可以很好地適應桌面,例如Material Density支援和NavigationRail,還可以通過Dart:FFI中的實驗與基礎桌面OS進行深度整合,並可以訪問系統選單欄和標準對話方塊。所有這些工作是為了確保除了適合移動樣式的體驗之外,Flutter還準備處理功能齊全的全尺寸桌面應用程式。

為Flutter平臺提供動力是我們長期的願景。我們已經在Google上看到了帶有Assistant等產品的清單,所以現在我們很高興看到其他人利用Flutter來支援更多平臺。今天,我們很高興與全球最流行的桌上型電腦Linux發行版Ubuntu的發行商Canonical共同宣佈Flutter的Linux alpha版本。

為什麼要在Linux上使用Flutter?

去年,當Google宣佈對Flutter提供桌面級應用程式支援時,Canonical看到了一個令人振奮的機會來進行Linux發行,包括Ubuntu,這是Flutter應用程式開發人員的有吸引力的目標平臺。 Flutter的原生跨平臺故事正在迅速發展,Canonical希望成為先鋒。通過在Flutter中啟用桌面Linux支援,Canonical使得應用程式開發人員可以非常輕鬆地通過Snap Store(Linux應用程式商店)為Linux使用者釋出他們的應用程式。通過使Linux成為一流的Flutter平臺,Canonical邀請應用程式開發人員將其應用程式釋出給數百萬Linux使用者,並擴大可供他們使用的高質量應用程式的可用性。

有關Flutter的許多事情對於Canonical來說是令人興奮的:

  • 快速發展的應用程式開發人員生態系統
  • 多平臺支援
  • 高度優化的本機應用程式
  • 現代的UI框架,支援宣告式,反應式和可組合的小部件
  • 使用Visual Studio Code,Android Studio和IntelliJ的豐富開發平臺

Google最初宣佈的Flutter桌面支援宣佈是從支援macOS的Alpha版本以及針對Linux和Windows的計劃開始的。Canonical 通過組建一支開發人員團隊與Google的開發人員合作,將Flutter的最佳體驗帶給大多數Linux發行版,從而對Flutter進行了重大投資。 Canonical將繼續與Google合作,以進一步改善Linux支援並保持與其他受支援平臺的功能對等。

Flokk:證明Flutter已為桌上型電腦做好準備

為了證明Flutter已為桌上型電腦做好了準備,我們與gskinner的設計師和開發人員合作,建立了創新的,精美的Flutter桌上型電腦應用程式。 Flokk是一個真實世界的應用程式,可處理真實世界的資料,尤其是您的Google聯絡人列表。

此視訊地址:www.youtube.com/watch?time_…

除了能夠管理您的聯絡人(包括搜尋聯絡人,新增新聯絡人和編輯現有聯絡人)之外,Flokk還使您可以將GitHub和Twitter處理與您的聯絡人資訊。

GitHub和Twitter通知的顯示將您的聯絡人變成您自己的個人社交網路。而且,如果您在Flokk Contacts中沒有看到您喜歡的社交網路,那麼好訊息是Flokk是完全開源的,因此您可以提交PR來新增您喜歡的。

除了在社交空間中進行創新外,Flokk還使用Flutter功能使外觀看起來很棒。僅作為一個示例,深色主題不僅可以切換顏色,還可以對更改進行動畫處理。

Flokk Contacts應用程式背後的創意團隊由Grant Skinner領導,他以出色的設計和實施創新的使用者體驗而聞名。 Grant曾說過關於在Linux上使用Flutter:

“構建Flokk Contacts應用程式非常容易!我們幾乎無需進行任何調整就可以將我們在Flutter上的所有專業知識應用於目標Linux,並且該應用程式執行出色。與Canonical團隊合作是一次很棒的經歷。他們熱心,投入並熱衷於使Flutter不僅針對Linux,而且針對每個平臺都變得更好。這是一個了不起的專案,我很高興能夠使用Flutter定位另一個主要的作業系統。” —Grant Skinner

如果您想在Linux機器上使用Flokk應用,則可以在GitHub上下載最新版本。或者,如果您正在快速執行,則可以從Snap Store下載Flokk應用。

在Linux上輕鬆安裝Flutter

現在,您已經瞭解了Flutter在桌面類應用程式(尤其是Linux)上的執行情況,您將希望使其在自己的Linux機器上執行。為使操作儘可能簡單,我們很高興在Snap Store中提供Linux版Flutter SDK。 Flutter SDK快照提供了在您喜歡的Linux發行版上開發Flutter應用程式所需的一切。無需安裝大量開發依賴項;只需安裝Flutter SDK快照和您最喜歡的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的更多資訊,請訪問https://snapcraft.io/flutter

適用於Linux桌面的Flutter

在Linux機器上安裝Flutter SDK之後,要構建桌面應用程式,您需要升級到Flutter開發人員或主渠道。然後啟用Linux桌面支援:

$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop
複製程式碼

現在,當您建立一個新的Flutter專案時,您將獲得一個linux子目錄,該目錄可讓您在Linux桌面上執行該應用程式:

$ flutter create counter
$ cd counter
$ flutter run -d linux
複製程式碼

您將獲得一個執行在Flutter上且執行於最新穩定版本GTK +上的閃亮的Linux新應用程式。如果您有一個現有的Flutter專案,並且希望在啟用Linux之後向其新增Linux支援,則可以新增linux子目錄,如下所示:

$ cd my_flutter_app
$ flutter create .
複製程式碼

這將使用需要在Linux桌面上構建和執行Flutter應用程式的Runner專案建立linux子目錄。

從Flutter訪問Linux中的本機程式碼

除了通過編寫Dart來建立Flutter小部件來支援桌面之外,您的Linux桌面應用還可以使用平臺渠道或C / C ++的Dart外部功能介面訪問所有本機Linux。或者,如果您想重複使用現有程式碼,則可以在pub.dev,Dart和Flutter的程式包管理器網站上找到該程式碼。在pub.dev上可以找到的大多數軟體包都是純Dart的,大多數都可以在Linux應用程式中正常工作。有些軟體包(稱為外掛)中包含特定於一個或多個平臺的本機程式碼。作為此版本的一部分,我們在pub.dev上釋出了三個使用Linux本機功能的外掛:

您可以在應用程式中使用這些外掛中的每個外掛,並作為如何從Flutter程式碼本地訪問Linux的示例,例如 Linux implementation of url_launcher

部署到 Snap Store

要將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 # app's main entry-point file
複製程式碼

現在,在帶有snapcraft.yaml檔案的目錄中,您可以執行snapcraft來構建應用程式的快照。

$ snapcraft
複製程式碼

如果一切順利,這將在您當前的工作目錄中生成一個檔案,例如flokk-contacts_1.0.1_amd64.snap。

設定好要在Snap Store中釋出的帳戶後,即可釋出snap:

$ snapcraft login
$ snapcraft register flokk-contacts
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge
複製程式碼

此命令會將應用程式上載到Snap Store,並嘗試將其釋出到邊緣通道。在邊緣通道中釋出應用程式後,可以通過Snap Store Desktop客戶端或使用命令列來安裝它:

$ snap install --edge flokk-contacts
複製程式碼

有關構建第一個快照並將其釋出在Snap Store中的更多詳細資訊,請參閱 https://snapcraft.io/first-snap#flutter 以獲取指導教程。

Flutter Linux桌面案例

Flokk應用程式是針對Linux桌面的真實Flutter應用程式的絕佳示例。對於更簡單的示例,您可以檢視照片搜尋應用程式,該應用程式還專門用於展示桌面功能。

Photo Search是一個簡單的線上照片搜尋應用程式,它使用多個外掛來訪問本機平臺功能,同時支援macOS和Linux。

對於帶有分步說明的示例Linux桌面應用程式,我建議編寫Write Flutter桌面應用程式程式碼實驗室,該教程將指導您使用OAuth和GraphQL在Flutter中構建GitHub客戶端。

對於一個功能更全面的應用程式,該應用程式可以使用Flutter的更多表面積並提供幾個小程式,我推薦Flutter Gallery,該軟體去年進行了重新設計,以支援桌上型電腦和移動裝置。如果您希望看到它的實際效果,也可以在Snap Store中檢視。

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平臺做最好的Flutter。

來自Canonical團隊的Linux Flutter,對於我們的夢想是向前邁出了一大步,無論您將目標對準哪個平臺,Flutter都是構建應用程式的最佳方法。針對桌上型電腦的定位使得Flutter引擎更加適應Google本身無法直接支援的長尾裝置,但我們計劃為此繼續建立合作伙伴關係並實現生態系統。

無論哪裡的裝置都需要快速,精美的應用程式,這就是我們希望Flutter成為的地方。

交流

老孟Flutter部落格地址(330個控制元件用法):laomengit.com

歡迎加入Flutter交流群(微信:laomengit)、關注公眾號【老孟Flutter】:

Canonical通過Flutter啟用Linux桌面應用程式支援
Canonical通過Flutter啟用Linux桌面應用程式支援

相關文章