PageControllerによって管理されるPageView内に一連のステートフルウィジェットがあります。私はpageController.jumpToPage(index)
を使ってページを切り替えています。ページを切り替えると、まるで最初から再作成されたかのように、すべての状態がウィジェット内で失われているように見えます。私はPageControllerでkeepPage: true
を使用しようとしましたが、それは効果がないようです。これはPageViewの意図した動作ですか、何か間違っていますか?任意の提案をいただきありがとうございます!Flutterでページを切り替えるとウィジェットの状態が失われるPageView
2
A
答えて
2
keepPage: true
です。 PageController
が破壊されて再作成された場合、そのページが覚えていることを意味します。これはあなたが望むものではありません。
代わりに、ページ固有のPageStorageKey
をページのコンストラクタに渡します。これはFlutterがあなたのページにユニークなストレージバケツを与えるのに役立ちます。次に、State
に以前の状態に復元する場合はPageStorage.of(context)
を使用してストレージバケットを取得できます。read
の値はinitState
で、write
の値は変更された時点の値になります。例はExpansionTileにあります。
関連する問題
- 1. フラグメントを切り替えるときToggleButtonの状態が変わる
- 2. Android:3GとWIFIの切り替えはアプリの途中で切り替える=ネットワーク接続が失われる
- 3. 2つのアイドル状態のアニメーション状態の切り替え
- 4. ページの更新中にページの状態が失われる
- 5. チェックボックスの状態で要素クラスを切り替える
- 6. Androidでは、画面を切り替えるとGPSデータが失われます
- 7. AndroidデバイスのWifiの状態を切り替える
- 8. クラスタ内の別のマシンに状態サーバを切り替える
- 9. 2つの状態を切り替えるCSSアニメーション
- 10. チェックボックスの状態を切り替える方法
- 11. GoogleグラフLineGraphの切り替えデータテーブルと状態の維持
- 12. アプリがサスペンド状態からアクティブ状態(iOS)に切り替わるときのネットワークアクティビティインジケータ
- 13. Android:プログラムでボタンの押された状態を切り替える方法は?
- 14. SimpleSAMLphp状態情報が失われる
- 15. antlr3文法でのレクサー状態の切り替え
- 16. httpからhttpsに切り替えるとMagentoセッションが失われました
- 17. フラグメントを切り替えるときにフラグメント状態を維持する方法
- 18. Android - 5つのアクティビティと最初のアクティビティの状態を切り替える
- 19. AngularJSサイトのページを切り替えるときにesriマップの状態を維持する方法
- 20. 別のコンポーネントから状態を切り替えよう
- 21. のAndroidアプリの問題をタブを切り替えるときの状態を失い、オリエンテーション
- 22. 3状態切り替えボタン?ほとんどどこでも私がチェック
- 23. メールをAR_MailerからDelayedJobに切り替えると失われた値
- 24. React-エレガントな状態の可視性の切り替え
- 25. ウィジェットの切り替え状態をチェックからチェック解除に変更する方法は?
- 26. アプリに戻るとSFSafariViewControllerの状態が失われる
- 27. WebViewアクティビティ保持状態(リロードなし)の切り替え
- 28. BlackBerryのページ/クラスを切り替える
- 29. 状態を失うことなくフラグメントを切り替える一般的な方法
- 30. JToggleButtonを使用して3つの状態を切り替える
これはこれが必要であることは奇妙に思えます。だから私は、ページビュー、またはナビゲーションスタックのすべてのウィジェットのスクロール位置を保存する必要があります場合は、そのようなものが存在する?ページを閉じるときにウィジェットをそのまま残す方法はありますか? PageViewのウィジェットの1つが、ページを外すときに状態を失うことはありません。そのため、私は全体的に何かばかげたことをしていることになります。 –
スクロール位置はフレームワークによって内部的に保持されます。[ScrollPosition'クラス]の 'PageStorage'の使用方法を参照してください(https://github.com/flutter/flutter/blob/6655074b370d39150d2ed28f67851e3bce7013ab/packages/flutter/lib/src/ウィジェット/ scroll_position.dart#L303)。他の状態が維持されている場合は、それがツリーの上位レベルに格納されている可能性があります。 –
ありがとうございました、ListViewを含むウィジェットのPageStorageキーを設定すると、スクロール位置を保存するというトリックが完了したようです。残りの状態ハンドリングがとても驚くほど自動化されている場合、なぜ手動で状態の部分を保存するのが必要なのか、私にはまだ分かりにくいのです。 StatefulWidgetが作成する状態オブジェクトが保存されてから自動的に再利用されるのはなぜか分かりません。 –