ページ遷移は ZoomPageTransitionsBuilder に置き換えられました
まとめ
ライブラリが最新の OEM 動作に確実に従うようにするために、
デフォルトのページ遷移ビルダーが現在使用しているZoomPageTransitionsBuilder
すべてのプラットフォーム (iOS と macOS を除く)
それ以外のFadeUpwardsPageTransitionsBuilder
。
コンテクスト
のFadeUpwardsPageTransitionsBuilder
(最初の製品に付属
Flutter リリース)、ページ遷移を定義しました。
Android O で提供されるものと同様です。このページはビルダーを遷移します。
Flutter によると、最終的には Android で非推奨になる予定です非推奨ポリシー。
ZoomPageTransitionsBuilder
、新しいページ遷移ビルダー
Android、Linux、Windows では、次のようなページ遷移が定義されています。
Android Q および R によって提供されるもの。
によるFlutter リポジトリのスタイルガイド、
フレームワークは最新の OEM の動作に従います。
ページ遷移ビルダーを使用してFadeUpwardsPageTransitionsBuilder
にすべて切り替わりますZoomPageTransitionsBuilder
。
現在のときTargetPlatform
持っていないPageTransitionsBuilder
で定義されているThemeData.pageTransitionsTheme
、ZoomPageTransitionsBuilder
がデフォルトとして使用されます。
変更内容の説明
PageTransitionsBuilder
で定義されていますPageTransitionsTheme._defaultBuilders
から変わりましたFadeUpwardsPageTransitionsBuilder
にZoomPageTransitionsBuilder
ためにTargetPlatform.android
、TargetPlatform.linux
とTargetPlatform.windows
。
移行ガイド
前のページ遷移ビルダーに戻りたい場合
(FadeUpwardsPageTransitionsBuilder
)、ビルダーを定義する必要があります
ターゲット プラットフォームに対して明示的に。
移行前のコード:
MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
)
移行後のコード:
MaterialApp(
theme: ThemeData(
pageTransitionsTheme: const PageTransitionsTheme(
builders: <TargetPlatform, PageTransitionsBuilder>{
TargetPlatform.android: FadeUpwardsPageTransitionsBuilder(), // Apply this to every platforms you need.
},
),
),
)
同じページ遷移ビルダーをすべてのプラットフォームに適用する場合:
MaterialApp(
theme: ThemeData(
pageTransitionsTheme: PageTransitionsTheme(
builders: Map<TargetPlatform, PageTransitionsBuilder>.fromIterable(
TargetPlatform.values,
value: (dynamic _) => const FadeUpwardsPageTransitionsBuilder(),
),
),
),
)
テストの移行
ウィジェットを見つけようとして失敗した場合は、要素が多すぎます新しいトランジションを使用すると、次のようなエラーが発生しました。
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following StateError was thrown running a test:
Bad state: Too many elements
When the exception was thrown, this was the stack:
#0 Iterable.single (dart:core/iterable.dart:656:24)
#1 WidgetController.widget (package:flutter_test/src/controller.dart:69:30)
#2 main.<anonymous closure> (file:///path/to/your/test.dart:1:2)
を使用してテストを移行する必要があります。descendant
の範囲Finder
特定のウィジェット タイプを使用します。
以下はその例ですDataTable
のテスト:
移行前のテスト:
final Finder finder = find.widgetWithIcon(Transform, Icons.arrow_upward);
移行後のテスト:
final Finder finder = find.descendant(
of: find.byType(DataTable),
matching: find.widgetWithIcon(Transform, Icons.arrow_upward),
);
通常、ファインダー スコープを移行する必要があるウィジェットは次のとおりです。Transform
、FadeTransition
、ScaleTransition
、 とColoredBox
。
タイムライン
リリースされたバージョン: v2.13.0-1.0.pre
安定リリース: v3.0.0
参考文献
API ドキュメント:
ZoomPageTransitionsBuilder
FadeUpwardsPageTransitionsBuilder
PageTransitionsTheme
関連する問題:
- 問題 43277
関連する PR:
- PR 100812