跳到主要内容

客户端存储

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

实际的存储机制取决于 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 应用程序的 UI,因此一个 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 应用程序的所有偏好设置,包括由同一个用户运行的应用程序。 这是一个警告,永久应用程序数据不应该存储在客户端存储中。