我可以通过在 flutter 应用程序中使用共享首选项来保存小部件吗?

can i save widgets by using shared prefrence in flutter apps?

有没有办法通过使用共享首选项包来(设置和获取)颜色数据类型或小部件列表数据类型

我想保存用户选择的颜色以及小部件。因此,当用户关闭应用程序并再次重新运行时,应用程序仍会显示颜色和小部件。

谢谢

是的,你可以。

为了将值保存到磁盘,该值必须是共享首选项可以使用和写入磁盘的类型。

对于此示例,我们将重点关注颜色 属性,将其转换为 json 并将其编码为字符串。

var color = Colors.white;
var json = {
  'r': color.r, 
  'g': color.g,
  'b': color.b,
  'a': color.a
};
var serializedValue = json.encode(json);

await SharedPreferences.setString('<your unique key>', serializedValue);

然后您可以使用具有共享首选项 setStringserialized 值,并且当您检索字符串时反转上面的编码以创建 Color 类型

您需要为 Widget 的每个 属性 执行此转换,以便保存和重新创建它。上面我已经概述了对颜色 属性 的处理,你需要对其他颜色做同样的处理。

您将无法直接将小部件保存到磁盘,因为它必须先序列化为可写入磁盘的格式