Desktop Flutter Example を Windows10 で試す（2019年8月15日）

# はじめに
Flutter（フラッター）は、Googleによって開発されたフリーかつオープンソースのモバイルアプリケーションフレームワークである。FlutterはAndroidやiOS向けのアプリケーションの開発に利用されています。現在では、Webアプリケーションやデスクトップアプリケーションの開発でも利用できるようにFlutterの開発が進められています。

ここでは、Windows10で、Flutter開発環境をインストールし、Desktop Fultter Exampleの動作確認を行います。

# Flutter開発環境の準備

Flutter、Android Studio、Android SDK、Visual Studio、ワークロード（C++によるデスクトップ環境）を順にインストールしていきます。画面キャプチャーを参考に、順に進めてください。

## Flutterの取得

Flutterをgitを使ってクローンします。

``` :Clone_with_HTTPS
https://github.com/flutter/flutter.git
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/5883d0a9-cf2a-e3cc-6e1d-0e1c05b725d1.png)

## 環境変数 path の設定

環境変数の path に \<取得先フォルダ\>/flutte/bin を追加します。

``` :pathに追加するパスの例
C:\workgit\flutter\bin
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/fba6c3b7-1f29-702d-4e8e-4ebeb1094cf2.png)

## 必要な開発環境の確認

flutter doctor コマンドで、必要な開発環境を確認します。初回のコマンド実行では、各種ツールのダウンロードが行われます。

``` cmd
flutter doctor
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/16ad6e0e-31f1-585a-be82-f0cad1944519.png)

コマンド実行後、次のような実行結果と診断結果とが表示されます。いくつかの問題点が検出されていますので、最後の項目から順に解消していきます。

``` :実行結果
Checking Dart SDK version...
Downloading Dart SDK from Flutter engine 4f00cb745c2895feb47985725f8ada94df72ce36...
Unzipping Dart SDK...
Building flutter tool...
Running pub upgrade...
Downloading Material fonts...                                       3.5s
Downloading android-arm-profile/windows-x64 tools...                3.2s
Downloading android-arm-release/windows-x64 tools...                2.9s
Downloading android-arm64-profile/windows-x64 tools...              3.9s
Downloading android-arm64-release/windows-x64 tools...              3.4s
Downloading android-x86 tools...                                   35.5s
Downloading android-x64 tools...                                   36.1s
Downloading android-arm tools...                                   16.5s
Downloading android-arm-profile tools...                            8.6s
Downloading android-arm-release tools...                            6.3s
Downloading android-arm64 tools...                                 19.8s
Downloading android-arm64-profile tools...                          9.3s
Downloading android-arm64-release tools...                          7.0s
Downloading Gradle Wrapper...                                       0.6s
Downloading package sky_engine...                                   1.6s
Downloading common tools...                                        18.0s
Downloading common tools...                                        18.0s
Downloading windows-x64 tools...                                   35.5s
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v1.8.5-pre.159, on Microsoft Windows [Version 10.0.18362.267], locale ja-JP)
[X] Android toolchain - develop for Android devices
    X Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.

[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
[!] Android Studio (not installed)
[!] Connected device
    ! No devices available

! Doctor found issues in 3 categories.
```

## Windowsデスクトップ開発の有効化
次のコマンドを実行し、Windowsデスクトップ開発を有効にし、Connected device 警告の解消します。

``` cmd
flutter config --enable-windows-desktop
```

## Android Studio のインストール
[Android Studio をダウンロード](https://developer.android.com/studio/)し、インストールします。
3.4.2 for Windows 64-bit (971 MB)

![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/47e72801-e7c7-4a84-fd44-9afb27e36929.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0d23dd10-bec5-e304-d045-9b237bedf9d2.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/4640452d-11bb-d6fc-9621-c53b6a927329.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/8ed92627-eb0a-6cfa-c0db-ee8f105e9fcc.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/19cc973f-8c65-797e-ec32-0755afd5b66c.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/06a76914-0ebd-e146-d237-b75ffb8866c3.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/8f91142c-a981-bba3-72bd-200098f23767.png)


## Android SDK のインストール
Android Studio を起動すると、Android SDK が見つからない旨のダイアログが表示されますので、インストールします。

![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/a397350f-bf5c-b4ff-5808-61c758a8b009.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/045f108c-f257-6e55-2014-80f99b5207fd.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/177f6233-ab88-0fc2-eb44-c92040eec0bb.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0e045b69-d478-8f21-d5cf-05b10cbe7dc3.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/b63347f2-3304-b9ff-99a7-8d7c818741ed.png)


## Plugin のインストール

flutter doctor で、確認すると、Android Studio で、新たな警告が表示されます。

```
[!] Android Studio (version 3.4)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
```

Android Studio を起動し、[Configure]→[Plugins]→[Marketplace]で、Flutterを検索し、FlutterをInstallします。FlutterをインストールするとDartも同時にインストールされます。
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/a6897988-b9e4-e5ae-a1eb-484143106d37.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/58156949-9a63-63fb-d107-f44de9f871d6.png)
インストール後、Android Studio を再起動します。
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0cf06a5f-8e5a-f883-285c-4e0c773c7459.png)


## Visual Studio のインストール
[Visual Studio Communityをダウンロード](https://visualstudio.microsoft.com/downloads/)し、インストールします。
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/d7438b8d-8d2e-edb6-e9d4-de2289435031.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0aa0129b-36df-cf6f-9784-89a519f1ee36.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/ca8e8e23-2459-35e2-b908-8b5c5748dfec.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/7e20a5f5-c054-45a9-48f4-4b4aa607b75a.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/cdb726a6-91f4-26b7-1207-e9a8230bdb1e.png)

## ワークロードの追加変更

ここで、再度、flutter doctor を実行すると、Visual Studio で、新たな警告が表示されます。

```
[!] Visual Studio - develop for Windows (Visual Studio Community 2019 16.2.2)
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop
      development with C++" workload, and include these components:
        MSBuild
        MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.21)
        Windows 10 SDK (10.0.17763.0)
```

デフォルトでインストールされるバージョンが異なるのでしょうか。Visual Studio インストーラーで、MSVCとWindows 10 SDK を追加変更します。

![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/26f12f8d-8739-ebcd-2bea-685dd4b74081.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/91f9a93d-b5e0-9531-0a31-9576a33db926.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/a6fdef5c-9e3d-6ba2-d815-f15e0c4ae22a.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/64efa95a-d309-7618-ee76-747c788190f5.png)

## ANDROID_HOME 環境変数の設定
Android toolchain の警告を解決するため、ANDROID_HOME 環境変数に、Android Studio を起動した際にインストールした Android SDK のインストールフォルダを設定します。

![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/849e105c-7600-f934-5816-e99c5d6cd35c.png)

## Android ライセンスへの同意

環境変数の設定を有効にする為に別のコマンドプロンプトを起動し、 flutter doctor を実行するとAndroidライセンスへの同意がされていない旨のメッセージが表示されます。

```
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    X Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
```

指示の通り、次のコマンドを実行し、ライセンス条項に y キーで同意します。

```
flutter doctor --android-licenses
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/7d073d83-b484-6325-2f25-cafab837a531.png)

## 最終確認
最後に、flutter doctor コマンドを実行し、すべての問題点が解消していることを確認します。

```
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v1.8.5-pre.159, on Microsoft Windows [Version 10.0.18362.267], locale ja-JP)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.2.2)
[√] Android Studio (version 3.4)
[√] Connected device (1 available)

• No issues found!
```

# Desktop Embedding for Flutter

Desktop Embedding for Flutter を取得し、exampleを実行します。

## Desktop Embedding for Flutter の取得

Desktop Embedding for Flutterをgitを使ってクローンします。

``` :Clone_with_HTTPS
https://github.com/google/flutter-desktop-embedding.git
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/900e3e43-f7ea-9ff9-38d2-c7de60a4a6c0.png)

## example の実行
exampleディレクトリーへ移動し、flutter run コマンドを実行します。

```
cd C:\workgit\flutter-desktop-embedding\example
flutter run
```
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/679545c6-e732-1818-7aeb-2425fccb0ed9.png)
![flutter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/9b455c62-657f-1e4c-a637-745338ab7cb6.png)

# おわりに
Windows10 上で、Flutterの開発環境を構築し、Desktop Flutter Example を実行しました。