我正在尝试从图像文件中获取base64字符串。当我使用以下方法
时Future convertBase64(file) async{
List<int> imageBytes = fileImage.readAsBytesSync();
String base64Image = await 'data:image/png;base64,' + base64Encode(imageBytes);
// print('length of image bytes ${base64Image.length}');
return base64Image;
}
它向我显示了一个错误:
exception---- Converting object to an encodable object failed: Instance of 'Future<dynamic>'
如果我不使用将来,它直接传递到下一步而无需转换为base64字符串。转换通常需要时间。
变量fileImage
似乎与传递的变量file
与函数不匹配。这可能是引起问题的人?
我很好奇为什么需要在String
上调用await
-这似乎是不必要的。该错误可能是在调用convertBase64()
的方式上引起的。对于诸如Future<T>
之类的异步方法,我建议将其称为:
convertBase64(imageFile).then((String base64Image) {
// Handle base64Image
});
另外,如前所述,最好使用Uri.dataFromBytes()
,而不是自己解析编码的字符串。
Future<String> convertBase64(File file) async{
List<int> imageBytes = file.readAsBytesSync();
return Uri.dataFromBytes(imageBytes, mimeType: "image/png").toString();
}