我有一个 Uint8List ,其中包含 pdf 的信息。我需要将此信息转换为字符串,以便保存 pdf 信息以供以后使用。但是,该过程存在问题,并且 pdf 信息中断。这是保存代码:
Future<void> setFormPdf(File pdf)async{
final String pdfKey = _getKey('pdf_name');
final bytesData = pdf.readAsBytesSync();
final pdfData = utf8.decode(bytesData, allowMalformed: true);
await storageConnector.setString(pdfData, pdfKey);
}
如果我不使用参数allowMalformed true的utf8.decode方法,应用程序会抛出有关utf8编码的异常。
稍后,当我要恢复 pdf 信息时,我使用下一个代码
final pdfPath = await getTemporaryPath('pdf_name.pdf');
final pdfData = File(pdfPath);
final String pdfKey = _getKey('pdf_name');
final stringPdf = await storageConnector.getString(pdfKey);
final bytesPdf = utf8.encode(stringPdf);
await pdfData.writeAsBytes(bytesPdf, flush: true);
那么,我该怎么办?我必须使用另一种方法将 Uint8List 转换为 String 吗?
我找到了解决方案。我只需使用方法
Uint8List
将 String.fromCharCodes(bytesData)
解码为字符串,并且必须使用方法 Uint8List.fromList(stringPdf.codeUnits)
再次对字符串信息进行编码。