0

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

4

2 回答 2

4

您可以使用以下代码实质上将您“转换”Uint8List为 a String,然后可以使用类SharedPreferencessetString方法轻松地将其存储在其中SharePreferences

String s = String.fromCharCodes(inputAsUint8List);

并转换回来

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

感谢 Günter Zöchbauer的字符串转换。

或者(正如 Richard Heap 建议的那样),您可以使用 base64 对您的数据进行编码

String s = base64.encode(inputAsList);

dart:convert库中以提高安全性,尽管这会增加用于存储字符串的空间量。

于 2020-07-21T17:00:41.993 回答
1

我相信克里斯托弗提出的另一个答案会对某些二进制值给出不正确的结果,至少在 Android 上是这样。正确的做法是使用标准二进制对可打印字符串进行编码。一个常见的是Base64

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

// and back
var bytesOut = base64.decode(printableString);
于 2020-07-22T10:01:23.640 回答