Flutter - 如何将 List<Uint8List> 放入共享首选项中?

Flutter - How to put List<Uint8List> into shared preferences?

我有一个 Unit8List 的列表,它存储了多个图像的数据。我想与其他活动共享列表,以便其他活动可以使用列表来显示图像。那么我如何使用 SharedPreferences 进行共享?或者有什么方法可以用来传递具有 Unit8List 对象的列表?

您可以使用以下代码从根本上将您的 Uint8List“转换”为 String,然后可以使用 setString 方法轻松将其存储在 SharedPreferencesSharePreferences class:

String s = String.fromCharCodes(inputAsUint8List);

并转换回来

var outputAsUint8List = Uint8List.fromList(s.codeUnits);

感谢 进行字符串转换。

或者(如 Richard Heap 建议的那样),您可以使用

对您的数据进行 base64 编码
String s = base64.encode(inputAsList);

dart:convert 库中以获得更高的安全性,尽管这会增加 space 用于存储字符串的数量。

我相信 Christopher 提出的其他答案对于某些二进制值会给出不正确的结果,至少在 Android 上是这样。正确的方法是使用标准二进制到可打印字符串编码。一个常见的是 Base64.

// convert to Base64
var printableString = base64.encode(bytesIn);

// and back
var bytesOut = base64.decode(printableString);