跳到主要内容

客户端存储 Client storage

Flet的客户端存储API允许在客户端上使用持久化存储来存储键值数据。Flet的实现使用了shared_preferences Flutter包。

实际的存储机制取决于Flet应用程序运行的平台:

写入数据到存储中:

# 字符串
page.client_storage.set("key", "value")

# 数字、布尔值
page.client_storage.set("number.setting", 12345)
page.client_storage.set("bool_setting", True)

# 列表
page.client_storage.set("favorite_colors", ["red", "green", "blue"])
备注

每个使用shared_preferences插件的Flutter应用程序都有自己的偏好设置。由于同一个Flet客户端(即Flutter应用程序)用于运行多个Flet应用程序的用户界面,因此在一个Flet应用程序中存储的任何值对于同一用户运行的另一个Flet应用程序来说都是可见/可用的。

为了区分一个应用程序的设置和另一个应用程序的设置,建议为所有存储键使用一些唯一前缀,例如{company}.{product}.。例如,在一个应用程序中存储身份验证令牌,可以使用acme.one_app.auth_token键,在另一个应用程序中使用acme.second_app.auth_token键。

警告

加密敏感数据并将其发送到客户端存储是Flet应用程序开发人员的责任,以防止其他应用程序或应用程序用户读取/篡改数据。

读取数据:

# 值会自动转换回原始类型
value = page.client_storage.get("key")

colors = page.client_storage.get("favorite_colors")
# colors = ["red", "green", "blue"]

检查键是否存在:

page.client_storage.contains_key("key") # 如果键存在则返回True

获取所有键:

page.client_storage.get_keys("key-prefix.")

移除一个值:

page.client_storage.remove("key")

清空存储:

page.client_storage.clear()
警告

clear()是一个危险的函数,它会删除同一用户运行的所有Flet应用程序的所有偏好设置,并且提醒不应该将永久应用程序数据存储在客户端存储中。