Googleは常に、Flutterを、あらゆるプラットフォームでそれらのプラットフォームのネイティブアプリケーションと同じくらい迅速に機能する魅力的なインターフェイスを作成するためのユニバーサルツールにするよう努めてきました。これが可能であることを確認するために、私たちはモバイルプラットフォーム(AndroidとiOS)に注力することから始めました。その結果、80,000を超える高速で美しいFlutterアプリケーションがGooglePlayで公開されました。

成功を基に、Flutterの機能をデスクトッププラットフォーム(macOS、Windows、Linux)に拡張することに1年以上忙しくしています。これは、Webアプリケーションと従来のデスクトッププロジェクトの両方に当てはまります。特に、エンジンの本格的なリファクタリングで忙しいです。リファクタリングは、デスクトップシステムで一般的なのと同じスタイルでマウスとキーボードの作業をサポートし、サイズを変更できるウィンドウをサポートすることを目的としています。これには、デスクトッププラットフォームで適切に機能する新しいユーザーインターフェイス機能が含まれます。これは、たとえば、MaterialDensityとNavigationRailのサポートです。これには、Dart:FFIのおかげでデスクトップオペレーティングシステムと緊密に統合された実験が含まれます、およびシステムメニューと標準のダイアログボックスを操作します。これはすべて、Flutterがモバイルプロジェクトの作成に適しているだけでなく、それに基づいて実際のデスクトップアプリケーションを開発する準備ができていることを確認するために行われました。
Flutterは、さまざまなプラットフォーム向けのプロジェクトを作成するためのツールとして長い間見てきました。グーグルでは、このビジョンの表現はアシスタントのようなプロジェクトによって表されます。現在、他の企業が新しいプラットフォームにFlutterサポートを展開しているのを見るのを楽しみにしています。本日、世界で最も人気のあるLinuxディストリビューションであるUbuntuを管理しているGoogleとCanonicalは、Flutter forLinuxのアルファ版のリリースを共同で発表できることを嬉しく思います。
Linux Flutter?
昨年、GoogleがFlutterを使用してデスクトップアプリケーションを開発する可能性を発表したとき、Canonicalは、Flutter開発者にとって魅力的なターゲットプラットフォームであるUbuntuを含むLinuxディストリビューションを作成する魅力的な機会と見なしました。 Flutterは、クロスプラットフォーム機能の観点から急速に前進しています。 Canonicalは、この運動の最前線に立ちたいと考えていました。 Canonicalは、FlutterがLinuxアプリをサポートするのを支援することにより、Flutterアプリの開発者に、LinuxアプリストアであるSnapStoreに作業を公開するための非常に簡単なメカニズムを提供します。 Canonicalは、LinuxをFlutterアプリケーションを公式にサポートするプラットフォームにすることで、開発者にプロジェクトを数百万のLinuxユーザーに提示し、質の高いプロジェクトの数を増やす機会を提供します。そのようなユーザーが利用できます。
Flutterの次の機能とこのフレームワークのエコシステムは、Canonicalにとって特に魅力的であるように思われます。
- 急成長しているアプリ開発者のコミュニティ。
- 複数のプラットフォームのサポート。
- 十分に最適化されたネイティブアプリケーションを開発する機能。
- 宣言的でリアクティブなレイアウトウィジェットのサポートなど、最新のUIフレームワークに固有の機能。
- VS Code、Android Studio、IntelliJを使用した豊富なアプリケーション開発環境。
Flutterでのデスクトップ開発に関するGoogleの最初の投稿は、macOSアプリをサポートするアルファリリースを扱っており、LinuxおよびWindows用のアプリをサポートする予定です。Canonicalは、専任の開発チームと協力してFlutterの開発に多額の投資を行ってきました。このチームは、Googleの開発者と協力して、ほとんどのLinuxディストリビューションのユーザーがFlutterアプリケーションを便利に楽しめるようにすることを目指しています。Canonicalは引き続きGoogleと協力して、Linuxサポートをさらに改善し、Linux上のFlutterアプリケーションで利用できる機能を他のプラットフォームのサポートと同じレベルに維持します。
Flokkアプリ-デスクトップ開発に対応したFlutterの証明
Flutterがモバイルアプリを開発する準備ができていることを示すために、gskinnerの設計者や開発者と協力して、革新的で魅力的なFlutterデスクトップアプリを作成しました。これはFlokkです-実際のデータを処理する実際のアプリケーションです。特に-Googleの連絡先からの連絡先のリストを使用します。これがFlokkのビデオデモです。
このアプリケーションを使用すると、連絡先を管理できます。特に、連絡先を検索し、新しい連絡先を追加し、既存の連絡先を編集します。 Flokkを使用すると、連絡先を適切なTwitterおよびGitHubアカウントに関連付けて、それらのアカウントのデータを操作することもできます。

FlokkContactsはデスクトップコンピュータ用
のFlutter上に構築されています。アプリケーションがTwitterやGitHubからの通知を表示できるという事実は、それをユーザーの個人的なソーシャルネットワークのようなものに変えます。関心のあるソーシャルネットワークがまだFlokkと統合されていない場合、Flokkは完全にオープンソースのプロジェクトであるため、対応するPRをプロジェクトリポジトリに送信するだけでこの問題を解決できます。
Flokkは、ユーザーインタラクションの革新的なアイデアを提供するだけでなく、Flutterの機能を使用して、魅力的でユーザーフレンドリーなインターフェイスを作成します。そのような可能性の一例を次の図に示します。ここでは、アプリケーションの暗いテーマに切り替えると、単純ではなく、アニメーション化された色の変更が実行されることが示されています。

フラッターの機能はFlokkがテーマのために流体アニメーション、高性能スクロール、および使いやすさを使用することができ
Flokkの背後にある創造的なチームを率いるグラントスキナー彼の優れたデザインソリューションと革新的なUXのアイデアでよく知られています。 GrantがLinuxでFlutterを使用することについて次のように述べています。「FlokkContactsアプリの開発は、非常に簡単な作業であることがわかりました。ここでFlutter開発のすべての経験を適用し、特別なトリックに頼ることなくLinux向けのアプリケーションを作成することができました。アプリはとても良いことがわかりました。 Canonicalチームと一緒に仕事をするのは本当に楽しかったです。彼らは私たちのビジネスに熱心で情熱的であり、Linuxだけでなく、他のすべてのプラットフォームについても考えることで、Flutterをより良くしたいと考えていました。それは素晴らしいプロジェクトであり、他のデスクトップオペレーティングシステム用のFlutterアプリケーションを開発する可能性が本当に気に入っています。」
LinuxボックスでFlokkを使用する場合は、GitHubからアプリケーションの最新リリースをダウンロードできます。あなたがsnapdを使用する場合と、あなたはからFlokkをダウンロードすることができスナップ店。
LinuxへのFlutterのインストール
Flutterを使用して作成できる高品質のデスクトップアプリケーション、特にLinuxアプリケーションを確認したので、独自のLinuxボックスでFlutterを試してみることをお勧めします。できるだけフラッタアプリケーションを開発するためのLinuxシステムを準備するプロセスを簡素化するために、我々はLinux用のフラッターSDKがでスナップパッケージとして利用可能であることを発表しているスナップストア..。このパッケージには、お気に入りのLinuxディストリビューションを使用してFlutterアプリケーションを開発するために必要なすべてのものが含まれています。そうは言っても、開発の依存関係全体をインストールする必要はありません。あなたがする必要があるのはあなたが好きなFlutterSDKとIDEスナップをインストールすることです。これで、独自のLinuxアプリケーションを作成、構築、公開するために必要なものがすべて揃いました。
たとえば、LinuxでFlutterアプリケーションの開発を開始したい場合で、Visual Studio Codeが好きな場合は、ターミナルで実行する必要のある一連のコマンドを次に示します。
$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter
Linuxで作業して、デスクトップだけでなくモバイルアプリケーションも作成する場合は、AndroidSDKまたはAndroidStudio(これにはすでにAndroid SDKが含まれています)をインストールすることで、これに備えることができます。Flutter SDKスナップの詳細については、こちらをご覧ください。
Linuxデスクトップアプリケーションの開発
LinuxコンピューターにFlutterSDKをインストールした後、チャネルに移動する
dev
かmaster
、Flutterを更新してデスクトップアプリケーションを作成する必要があります。次に、Linuxデスクトップアプリケーションのサポートを有効にする必要があります。
$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop
これで、新しいFlutterプロジェクトを作成すると、
linux
Linuxでアプリケーションを実行できるサブディレクトリが作成されます。
$ flutter create counter
$ cd counter
$ flutter run -d linux

有名なFlutterCounterアプリケーションはLinux
でもうまく機能します。Flutterで構築され、最新の安定バージョンのGTK +で実行される新しいLinuxアプリケーションがあります。Linuxサポートを装備したいFlutterプロジェクトがすでにあり、そのようなプロジェクトでLinuxサポートを有効にした後でこれを行った場合は、
linux
自分でディレクトリをプロジェクトに追加できます。
$ cd my_flutter_app
$ flutter create .
これにより、LinuxデスクトップでFlutterアプリケーションをビルドして実行するために必要な特別なプロジェクトを含むサブディレクトリが作成されます。
FlutterからネイティブLinuxコードへのアクセスを調整する
Dartコードを記述してFlutterウィジェットを作成することでデスクトップアプリケーションをサポートすることに加えて、Linuxデスクトップアプリケーションは、プラットフォームチャネルまたはC / C ++の外部機能インターフェイス(FFI)を使用してネイティブLinux機能にアクセスできます。 ..。または、必要に応じて、pub.devにある既存のコードを再利用できます。、Dart andFlutterのパッケージマネージャーサイト。pub.devにあるパッケージのほとんどは、純粋なDartで記述されており、これらのパッケージのほとんどはLinuxアプリケーションで正常に機能します。プラグインと呼ばれる一部のパッケージには、特定のプラットフォームを対象とするネイティブコードが含まれています。このリリースの一環として、ネイティブLinux機能を使用する3つのプラグインをpub.devに公開しました。
- url_launcher:デフォルトのブラウザでURLを開きます。
- shared_preferences:アプリケーションのさまざまなセッションで使用されるユーザー設定。
- path_provider:ダウンロードや画像などのディレクトリなど、特定のディレクトリに関連するパス情報。
これらの各プラグインはアプリケーションで使用できますが、FlutterコードからネイティブLinux機能を操作する方法の例としても使用できます。例えば、ここにあるurl_launcherプラグイン実装のソースコード。
SnapStoreへのアプリの公開
FlutterアプリをSnapStoreに公開するには、まず、アプリをスナップパッケージとしてビルドおよび公開するために使用されるツールであるSnapcraftをインストールする必要があります。
$ sudo snap install snapcraft --classic
Snapcraftの機能を利用するには、アプリケーションのプロジェクトディレクトリにファイルを作成する必要があります
snapcraft.yaml
。たとえば、そのようなファイルがFlokkでどのように表示されるか。
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を実行してアプリケーションスナップパッケージを作成できます。
$ snapcraft
すべてが期待どおりに機能する場合、このコマンドは現在の作業ディレクトリにファイルを作成します。これは次のように呼ばれます。
flokk-contacts_1.0.1_amd64.snap
アカウントをSnapStoreに公開する 準備ができたら、作成したスナップを公開できます。
$ snapcraft login
$ snapcraft register flokk-contacts
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge
ここでは、アプリをSnap Storeにアップロードし、エッジフィードに公開しようとしています。アプリがこのチャネルに公開されたら、Snap Storeデスクトップクライアントを介して、またはコマンドラインを使用してインストールできます。
$ snap install --edge flokk-contacts
最初のアプリを作成してSnapStoreに公開する方法の詳細については、こちらをご覧ください。
Flutterデスクトップアプリケーションの例
Flokkアプリは、Linuxデスクトップ向けの実際のプロジェクトの優れた例です。より簡単な例については、写真検索アプリをご覧ください。これは、デスクトップアプリケーションを開発するためのFlutterの機能を実証するために特別に作成されました。

写真検索アプリケーション
これは、いくつかのプラグインを使用して、macOSやLinuxなどのサポートするプラットフォームのネイティブ機能にアクセスするシンプルなオンライン写真検索アプリケーションです。
Linuxデスクトップアプリケーションを開発する方法のステップバイステップの説明が必要な場合は、このコードラボチュートリアルをご覧ください。OAuthとGraphQLを使用して、Flutterを使用してGitHubクライアントを構築することに焦点を当てています。

GitHubクライアント
Flutterの機能をさらに多く使用し、興味深いコード例がいくつかある、より複雑なプロジェクトを探索したい場合は、 FlutterGalleryアプリをご覧ください。昨年やり直しました。モバイルプラットフォームに加えて、デスクトッププラットフォームもサポートするようになりました。このアプリの動作を確認したい場合は、 SnapStoreからダウンロードできます。

Flutter Galleryアプリは、SnapStoreからダウンロードできます
。Flutterのエンターテインメント機能を説明する別のデスクトップアプリを次に示します。これは、ThorstenLorenzによって作成されたマルチプレイヤーbatufoゲームです。この美しいゲームにより、世界中のプレイヤーがリアルタイムで対戦することができます。

Flutter
Thorstenがサポートするさまざまなプラットフォームで実行されるBatufoゲームは、Linux、macOS、Android、iOSなどのさまざまなプラットフォームをサポートするこのゲームを作成しました。このゲームがどのように開発されたかについて知りたい場合、およびこのプロジェクトの開発を見たい場合は、これらのビデオを見て、プロジェクトリポジトリを調べることができます。Linuxでは、このゲームはSnapStoreからインストールできます。
結果
Flutter for Linuxのアルファ版のリリースと、GoogleとCanonicalの緊密なコラボレーションのおかげで、Linux開発者は、Flutterの機能を使用して、オペレーティングシステムに合わせたアプリケーションを作成できるようになりました。Flutter SDKスナップをインストールし、 VSCodeまたはAndroidStudioを使用してアプリをビルドおよびテストし、SnapStoreに公開するだけです。 Flutterを使用したデスクトップ開発のニュースについては、こちらを参照してください。そして、これは私たちにとって非常に重要です、レビューを残してみてくださいFlutterの新機能について。これにより、Flutterアプリケーションに対するLinuxのサポートを可能な限り向上させることができます。実際のところ、私たちは他のプラットフォームと連携して同じことを達成するよう努めています。
Canonicalの開発チームによるFlutterfor Linuxは大きな前進であり、Flutterをすべてのプラットフォームの究極のアプリケーション開発フレームワークにするという私たちの夢に向けた一歩です。 Flutterアプリケーションをデスクトップ用に開発できるようになったという事実により、Flutterエンジンはさまざまなデバイスからはるかにアクセスしやすくなります。 Googleはこれらのデバイスを直接サポートすることはできませんが、同社は引き続き他の企業とのパートナーシップを構築し、Flutterエコシステムを開発する予定です。
高速で魅力的なアプリを必要とするすべてのデバイスでFlutterを確認したいと考えています。
Linux用のFlutterアプリケーションを構築してみましたか?
