如果你想從一個頁面進入另一個頁面,返回時還是保留著跳轉前的最后的狀態(tài),也許你第一個想的是用Key去實現,但是那么有點麻煩,很多人的都不知道如何下手。今天我查找源碼,發(fā)現了一個PageStorage這個類,它主要是用于存儲狀態(tài)的,不管你有多少頁面,都可以保存狀態(tài)信息。真是太方便了,而且使用起來也是超級簡單。下面詳細講解一下PageStorageKey、PageStorageBucket和PageStorage這幾個類的用法和源碼解析。
Flutter系列博文鏈接 ↓:
工具安裝:
Flutter基礎篇:
- 谷歌Flutter1.0正式版發(fā)布
- Flutter基礎篇(1)-- 跨平臺開發(fā)框架和工具集錦
- Flutter基礎篇(2)-- 老司機用一篇博客帶你快速熟悉Dart語法
- Flutter基礎篇(3)-- Flutter基礎全面詳解
- Flutter基礎篇(4)-- Flutter填坑全面總結
- Flutter基礎篇(5)-- Flutter代碼模板,解放雙手,提高開發(fā)效率必備
- Flutter基礎篇(6)-- 水平和垂直布局詳解
- Flutter基礎篇(7)-- Flutter更新錯誤全面解決方案(圖文+視頻講解)
- Flutter基礎篇(8)-- Flutter for Web詳細介紹
- Flutter基礎篇(9)-- 手把手教你用Flutter實現Web頁面編寫
- Flutter1.9升級體驗總結(Flutter Web 1.9最新版本填坑指南)
Flutter進階篇:
- Flutter進階篇(1)-- 手把手帶你快速上手調試Flutter項目
- Flutter進階篇(2)-- Flutter路由詳解
- Flutter進階篇(3)-- Flutter 的手勢(GestureDetector)分析詳解
- Flutter進階篇(4)-- Flutter的Future異步詳解
- Flutter進階篇(5)-- 使用Flutter創(chuàng)建插件詳解并發(fā)布到Pub庫
- Flutter進階篇(6)-- PageStorageKey、PageStorageBucket和PageStorage使用詳解
- Flutter進階篇(7)-- Flutter路由輕量級框架FRouter
Dart語法系列博文鏈接 ↓:
Dart語法基礎篇:
Dart語法進階篇:
Flutter安裝路徑:E:/develop/flutter
。
本文所講到的文件名稱為:page_storage.dart
,源碼存放在本地的路徑為:Flutter安裝路徑/packages/flutter/lib/src/widgets/page_storage.dart
。
一、PageStorageKey:
PageStorageKey繼承自ValueKey,其實就是一個Key,保存狀態(tài)用的。
PageStorageKey:它是定義PageStorage
的value
將保存在何處的一個ValueKey
。
Scrollable
(實際上是ScrollPosition
)以及它的相關類使用PageStorage
保存滾動偏移量。每次滾動完成時,滾動條的頁面存儲都會更新。
源碼:
class PageStorageKey<T> extends ValueKey<T> {
/// Creates a [ValueKey] that defines where [PageStorage] values will be saved.
const PageStorageKey(T value) : super(value);
}
例如,為了確保在重新創(chuàng)建TabbarView時恢復下面每個MyScrollableTabView中scrollable 的滾動偏移量(scroll offsets),我們指定了pageStorageKey,其值是Tabs的字符串標簽。示例代碼如下:
new TabBarView(
children: myTabs.map((Tab tab) {
new MyScrollableTabView(
key: new PageStorageKey<String>(tab.text), // like 'Tab 1'
tab: tab,
),
}),
)