Flutter - 如何将 List<Uint8List> 放入共享首选项中?
Flutter - How to put List<Uint8List> into shared preferences?
我有一个 Unit8List 的列表,它存储了多个图像的数据。我想与其他活动共享列表,以便其他活动可以使用列表来显示图像。那么我如何使用 SharedPreferences 进行共享?或者有什么方法可以用来传递具有 Unit8List 对象的列表?
您可以使用以下代码从根本上将您的 Uint8List
“转换”为 String
,然后可以使用 setString
方法轻松将其存储在 SharedPreferences
中SharePreferences
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);
我有一个 Unit8List 的列表,它存储了多个图像的数据。我想与其他活动共享列表,以便其他活动可以使用列表来显示图像。那么我如何使用 SharedPreferences 进行共享?或者有什么方法可以用来传递具有 Unit8List 对象的列表?
您可以使用以下代码从根本上将您的 Uint8List
“转换”为 String
,然后可以使用 setString
方法轻松将其存储在 SharedPreferences
中SharePreferences
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);