Open1
flutter with PWA(Progressive Web Application)
FlutterでPWAアプリを作成する。
- Flutter with Progressive Web App Support | App development | Blog
- How to build PWA with Flutter - Innovature
環境
- macOS Big Sur 11.2
事前インストール
- macOS install - Flutter
- google chrome
PWAアプリ構築手順
iOS/Androidアプリを作成しない場合には、flutter doctorで✗がついても気にしない。
$ flutter channel master
$ flutter upgrade
Downloading Dart SDK from Flutter engine edcca81180297174c1cf715910a4e3b8b5240d80...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 197M 100 197M 0 0 15.2M 0 0:00:12 0:00:12 --:--:-- 17.0M
Building flutter tool...
Flutter is already up to date on channel master
Flutter 1.26.0-18.0.pre.177 • channel master •
https://github.com/flutter/flutter.git
Framework • revision 9278ea984f (10 minutes ago) • 2021-02-03 18:31:03 -0500
Engine • revision edcca81180
Tools • Dart 2.12.0 (build 2.12.0-283.0.dev)
$ flutter doctor -v
Downloading package sky_engine... 1,113ms
Downloading flutter_patched_sdk tools... 1,691ms
Downloading flutter_patched_sdk_product tools... 1,323ms
Downloading darwin-x64 tools... 3.3s
Downloading darwin-x64/font-subset tools... 890ms
[✓] Flutter (Channel master, 1.26.0-18.0.pre.177, on macOS 11.2 20D64
darwin-x64, locale ja-JP)
• Flutter version 1.26.0-18.0.pre.177 at /Users/unokun/flutter
• Framework revision 9278ea984f (15 minutes ago), 2021-02-03 18:31:03 -0500
• Engine revision edcca81180
• Dart version 2.12.0 (build 2.12.0-283.0.dev)
[✗] Android toolchain - develop for Android devices
✗ ANDROID_HOME = /Users/unokun/Library/Android/sdk
but Android SDK not found at this location.
[✓] Xcode - develop for iOS and macOS
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.4, Build version 12D4e
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 48.0.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build
1.8.0_242-release-1644-b3-6222593)
[✓] IntelliJ IDEA Community Edition (version 2020.3.1)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.19.0
[✓] Connected device (1 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 88.0.4324.96
! Doctor found issues in 1 category.
$ flutter config –enable-web ← これが重要
Setting "enable-web" value to "true".
You may need to restart any open editors for them to read new settings.
$ flutter devices
1 connected device:
Chrome (web) • chrome • web-javascript • Google Chrome 88.0.4324.96
プロジェクト作成
$ flutter create hello
$ cd hello
$ flutter run -d chrome
→ Goole Chromeが起動する
http://localhost:50260/#/
デプロイ
Webアプリをビルドする。
build/web以下にlib/main.dartがminifyされてmain.dart.jsとして作成される。
$ flutter build web
surgeを使ってWeb上にdeployする。
※)deployできるのであれば必須ではないが、簡単に確認できる。
$ npm install -g surge
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/Users/unokun/.anyenv/envs/nodenv/versions/14.9.0/bin/surge -> /Users/unokun/.anyenv/envs/nodenv/versions/14.9.0/lib/node_modules/surge/lib/cli.js
+ surge@0.21.7
added 112 packages from 96 contributors in 6.019s
$ cd build/web
$ surge
Running as xxx (Student) ← 初回実行時に登録したメールアドレス
project: (プロジェクトをインストルしたパス)/flutter/hello/build/web/
domain: flashy-history.surge.sh
upload: [] 100% eta: 0.0s (13 files, 3384473 bytes)
CDN: [====================] 100%
encryption: *.surge.sh, surge.sh (79 days)
IP: 138.197.235.123
Success! - Published to flashy-history.surge.sh
不要になった場合には、以下のコマンドを実行する。
surge teardown flashy-history.surge.sh
確認
Android/iOS端末のGoogle ChromeでdeployしたURLを開く。
http://flashy-history.surge.sh
Android端末の場合には、メニュー「ホーム画面に追加」をタップするとショートカットが作成される。