Flutter 1.22 のアップデート内容メモ
Flutter 💙 1.22 stable release!
— Flutter (@FlutterDev) 2020年10月1日
🌟Support for iOS 14 and Android 11
🌟i18n and l10n support
🌟Google Maps
🌟WebView plugins
🌟New App Size tool, and more.
Thank you for your support -- we build Flutter for you,
Happy coding
Learn more → https://t.co/UA7EzSPhSd pic.twitter.com/aPiGgbYU16
iOS14対応
- defaultのテンプレートをiOS8.0のものからiOS9.0のものに変更
- iOS 14 固有のFontのレンダリングのクラッシュ問題を修正
- 物理デバイスへのデプロイの問題を修正
- ClipBoardへのアクセス時の通知ポリシー修正
- App Clipsを使うことが可能に
- 10MB未満の軽量バージョンのアプリをインストールなしに使える機能
- ドキュメント: Adding an iOS App Clip target - Flutter
- サンプル: samples/ios_app_clip at master · flutter/samples · GitHub
iOS14向けの開発を行う場合は詳しくはこちら
その他iOS向け
- iOSの新しい SF Symblosフォントをサポート
- cupertino_iconを1.0.0以上にすることで新しいアイコンが適用される
Android 11
2つの新機能のサポートあり
- notchやカットアウト、waterfallディスプレイに対応したinsetを公開
- MediaQueryやSafeAreaのAPIを使用することで対応可能
- ソフトウェアキーボードのアニメーションがなめらかに
Universe Button (Buttonの拡張)
今までButtonのカスタムをする場合は少しやりにくかったですが、Materialの仕様が拡張され、新しいスタイルのボタンを作ることが可能になった
FlatButton
-> TextButton
RaisedButton
-> ElevatedButton
OutlineButton
-> OutlinedButton
今までのButtonが使えなくなるわけではなく、新しいボタンとそれにあったスタイル定義をすることができるようにあった感じ?
PlatformViewの改善
Navigator 2.0
Design Docs: docs.google.com
解説記事なども上がってたので後でよむ
プレビューリリース
- Androidの状態復元機能
- スムーズなスクロールパフォーマンス
- 入力のディスプレイ周波数と表示のディスプレイ周波数が異なる場合でもパフォーマンスの低下を防ぐために、
resamplingEnabled
フラグを追加 - これをtrueにするとパフォーマンス低下を防ぎ、なめらかなスクロールを体験することができる(今後はデフォルトで設定されるようになる)
- 入力のディスプレイ周波数と表示のディスプレイ周波数が異なる場合でもパフォーマンスの低下を防ぐために、
開発ツール関連
- 新しいDart開発ツールの追加(https://medium.com/dartlang/announcing-dart-2-10-350823952bd5)
- アプリのサイズ解析ツールの追加
- buildコマンドに
--analyze-size
をつけると解析結果も表示される
- buildコマンドに
2020年 8月振り返り
早いもので前回の振り返りからもう6ヶ月も経っていました。
3月ぐらいから8月までの振り返り 世の中的にも個人としても大きな変化があった半年でした。
転職した
内定者バイトとかインターンとか含めると約13年所属していたサイバーから卒業しました。 意思決定したときには、コロナがここまでの猛威をふるうものだとも思わず… 結局最終出社のときには基本リモートになっており、長らくお世話になったに方々に対面での挨拶ができず、申し訳無さというか残念な気持ちでの卒業となってしまいました。 副業という形で関わらせていただいているので、卒業といいつつも関わらせてもらってます。最終出社でした。 pic.twitter.com/yTwbZEp7zY
— atsumo (@atsumo) 2020年6月18日
6月末ぐらいから SmartDriveにJoinし、引き続きアプリ周りとかをやっています。 移動データの価値創造みたいな結構難しい部分ではあるものの、自動車界隈が100年に一度の変革期と言われてたりするので、チャンスと可能性は感じながら日々仕事してます。 smartdrive.co.jp
働き方がだいぶ変わった
自分がSmartDriveに入社したときには、ほぼ完全リモート体制になっており、自分が入社してから物理出社したのは3回ぐらいです。 正直まだ顔も名前も一致しない状態でのリモートは戸惑うことも多く色々と大変?ですが、時間の使い方はかなり有効に使えてる気がしています。 9月からはお試しとして一旦週1物理出社になり、対面でのコミュニケーションのありがたさを感じつつ、しっかりと関係値を作り上げてリモートでも力発揮できるようにしないとなと思いながら仕事しています。
そして今までは10:00 ~ 19:00での時間固定の業務時間でしたが、転職後はフレックスタイムになりました。 フレックスを経験するまでは、MTGの時間とかどうするんだよ?どうやって調整するんだろう?とか、いろいろとうまくいくのか不安でしたが、 予定が入ってたらその時間にいればいいし、逆もしかりという感じで、よしなにうまくいくものなのだなと思いました。 どうしても予定があって抜けなければ行けない時間がある場合などは、予めその時間にはいないことを周知しておけばいいし、全然どうにでもなるもんなんだなと。 うちみたいな共働きで、子育て世代には本当にありがたいなと思ってます。
Flutterをやり始めた
少人数で素早くプロダクトを作りたいということで Flutter
を採用し、Flutter漬けの毎日を送っています。
今年はFlutterガッツリやっていこう。
— atsumo (@atsumo) 2020年5月23日
Jetpack Composeを普通に使う時代になったら戻ってきますw
自分がちゃんとやり始めたからそう見える部分もあるのかもしれないですが、Flutter流行ってる感を日々感じてますw ありがたいことに日本語のブログとかもちらほら出てきてたりとか、アーキテクチャ周りの記事とかも増えてきていたり、プロダクトでもFlutter採用事例とかも増えてきている?気がしています。 自分も存在をアピールするためにも、ちゃんとアウトプットしないといけないよなとは思いつつ、全然できてません。
Flutterの案件で面白いものがありましたらぜひお声がけください!(すぐに対応できるかわからないですがw)
デザインエンジニア領域
CAにいたときデザインエンジニア領域を何かしらやりたいと思っていたのですが、正直今もそこをできているかと言われるとできてないです。 今の会社ではデザインエンジニア領域が重要になる組織フェーズでもない気がするので、インプットしつつも組織にフィットしたソリューションとして使えるものであれば取り組もうかなと思ってるぐらいです。 FlutterやJetpackComposeやSwiftUIなど宣言的UIで、UIを作る場合のデザインデータとの実装の間部分に関しては、今後いろいろできそうだなと思いながらも、デザイン制作過程から実装部分での生産性向上へのアクションはどこかのタイミングでやりたいなとは思ってます。
まとめ
2月に振り返ったときは、キャリアについて一通り悩み追えて、転職を決断ぐらいのタイミンでした。 今は自分が下した決断が良かったと思えるように、チャンスと可能性をものにできるようにいろいろと試行錯誤しつつ頑張っていこうと思います。
FlutterのLocationのプラグインのメモ(android視点)
- FusedLocationProviderClientを使用して位置情報を取得
flutterlocation/FlutterLocation.java at master · Lyokone/flutterlocation · GitHub
- default は5000msに1回
- changeSettingsでintervalやaccuracyなどを設定可能
- Permission
pub.dev - FesedLocationProviderClientを使用(Android) - 無理やりLocationManagerを使用する設定も存在する - iOSはCLLocationManager - LocationOptionsでinterval, distanceFilter, accuracy指定可能
pub.dev - FusedLocationProviderClient - Intervalは 2000millsec - PermissionHandlerを内包
2020年にFlutterを始める上で読んだ記事まとめ
はじめに
最近Flutterでの置き換え実装やFlutterの新規案件が増えてきている気がしているので、自分がお世話になった記事や動画、サンプルなどをまとめてみました。
少し自分の考えを書いていますが、基本的には参考にさせていただいた記事のリンクになります。
基本
- https://flutter.dev/
- パッケージマネージャー
- Effective Dart
アーキテクチャ
- scoped_model
- BLoC
- https://pub.dev/packages/bloc
- scoped_modelはmodelのstateが変更されたら、その配下すべてのWidgetに対してrebuildがかかる
- BLoCはstate自体をstreamにすることで、streamを個々のwidgetでlistenするのでrebuildの対象を小さくできる
- https://itome.team/blog/2019/12/flutter-advent-calendar-day21/
- https://qiita.com/kabochapo/items/8738223894fb74f952d3
- Provider × ChangeNotifier
- BLoCが複雑で学習コストが高い…
- 簡単に状態管理をする方法(ChangeNotifier)
- DI及び状態管理用パッケージのProvider
- Providerはアクセス制御や変更通知の機能を提供している
- Widget上でProviderで状態作成
Google I/Oの19で Google I/O 18当時紹介した BLoCは複雑になるのでProviderで複雑さを解決できるよ的な話をしている
Provider
- Riverpod(experimental)
- Providerの作者によるProviderのrewriteプロジェクト
- Providerのような使い方ができるが、Providerが抱えていた問題を解決したもの
- 同じTypeのProviderを複数持つことができる
- Providerのような使い方ができるが、Providerが抱えていた問題を解決したもの
- https://pub.dev/packages/riverpod
- https://riverpod.dev/
- StateNotifier → Riverpod置き換え
- Providerの作者によるProviderのrewriteプロジェクト
awesome/sample
- gallery
- https://flutterawesome.com/
- https://github.com/Solido/awesome-flutter
- 公式サンプル集
- Flutterで作られたアプリリスト
- https://flutterarsenal.com/
読み物/動画系
- https://medium.com/flutter-community
- Flutter Weekly
Flutter Widget of the Week
https://www.youtube.com/playlist?list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG
その他
- Add Flutter to existing app
- 既存iOS/AndroidアプリにFlutterを追加する
- 自動コード生成を駆使してFlutter 開発を楽にするhttps://qiita.com/kikuchy/items/cdd95bb9a02c4edf8f12
- KotlinとJavaができる人向けDart速習https://qiita.com/kikuchy/items/2cce118d38fc15324b2b
- Flutter 全部俺 Advent Calendar 2019 https://adventar.org/calendars/4140