概要
どうも、@daiki1003です!を先日公開しましたが、本記事ではそのFlutter 3.16
に対応する時にしたことをまとめてみました!
・アップデートしたいけど、どれくらい時間がかかるか心配
・何を変更しなければいけないか、あらかじめ知りたい
そんな人に向けた記事です。
それでは行ってみましょー!
執筆時アップデート前環境
名前 | バージョン |
macOS Ventura | 13.1 |
Flutter | 3.13.9 |
Flutter 3.16
deprecated_member_use
WillPopScope
をPopScope
に変更します。
その際に、インタフェースが変更されているので最初は機械的に変更するのは難しそうです。
大きく3パターンに分かれるのでそれぞれ解説します。
遷移するかどうかが変数に依存する場合
PopScope.canPop
にそのまま渡します。
// BEFORE WillPopScope( onWillPop: () async { return _myCondition; }, child: ... ), // AFTER PopScope( canPop: _myCondition, child: ... ),
遷移前処理を行っている場合
PopScope.onPopInvoked
でその処理を行います。
// BEFORE WillPopScope( onWillPop: () async { _myHandleOnPopMethod(); return true; }, child: ... ), // AFTER PopScope( canPop: true, onPopInvoked: (bool didPop) { _myHandleOnPopMethod(); }, child: ... ),
ユーザに遷移するかどうかを委ねる
例えば、X (旧Twitter) で投稿内容がある時に戻ろうとすると、「変更内容が破棄されます」と言う旨のダイアログが表示される。
ユーザの選択内容によっては、戻るみたいな状況はこちらです。
// BEFORE WillPopScope( onWillPop: () async { final shouldPop = await _showBackDialog(); return shouldPop ?? false; }, child: child, ) // AFTER return PopScope( canPop: false, onPopInvoked: (bool didPop) async { if (didPop) { return; } final navigator = Navigator.of(context); final shouldPop = await _showBackDialog(); if (shouldPop ?? false) { navigator.pop(); } }, child: child, )
メソッド名が、onPopInvoked
であることに要注意です。
つまり、onPopped
ではないので、pop
したかどうかは問いません。canPop
がfalse
でない場合でも、onPopInvoked
は呼ばれ、didPop
はfalse
になっています。
deprecated_member_use
textScaleFactor
をTextScaler
に変更します。
textScaleFactor: 1の場合
textScaler: TextScaler.noScaling
に変更します。
textScaleFactor: 1以外の場合
textScaler: TextScaler.linear(元の値)
に変更します。
ThemeData.useMaterial3
Flutter 3.16
では、デフォルトでMaterial 3
が適用されます。
ですが、ほとんどのアプリはすぐにMaterial 3
対応するのは難しいと思います。
なので、必要あればThemeData.useMaterial3
にfalse
を明示的に指定します。
Dart 3.2
現状、特にありませんでした。
最後に
Flutter 3.13.9
、Dart 3.2
からの移行はこれだけとなりました。
今後、何か追加がありましたら追記していきたいと思います。
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント