如何从flutter中的签名板获取base64String并直接发送到rest而不保存文件?
I'm trying with packages : easy_signature_pad: ^1.0.6 , syncfusion_flutter_signaturepad 23.2.7 ,signature: ^5.4.1
void setImage(String bytes) async {
if (bytes.isNotEmpty) {
Uint8List convertedBytes = base64Decode(bytes);
setState(() {
signatureBytes = convertedBytes;
});
} else {
setState(() {
signatureBytes = null;
});
}
}
This is the code I used to convert
String uint8ListTob64(Uint8List uint8list) {
String base64String = base64Encode(uint8list);
String header = 'data:image/png;base64,';
return header + base64String;
}
`但结果不是完整的签名图像。
我需要直接发送到rest api,而不将文件保存在临时位置。 将 base64 发送为 `
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAALuCAYAAAAHTat/AAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAACAASURBVHic7N1pfFXlvfbxK4QhIyQkJCEDCUNAIDIPQlAZRaGUahXRooIWawVU1KNtlVqk6kFURERLpaJ1ni0yCCKIqExhRqYAAZJACBnIHIaQ58U5h8fN3jskYa9hJ7/vq67/Wnvti8+nqLmy1n37VFZWVgoAAAAAYInZs2fr4YcfdnkuPz9fISEhJicCYJIZDaxOAAAAAAD1Wffu3d2eO3jwoIlJAJiNUgYAAAAALBQaGur2XHl5uYlJAJiNUgYAAAAALBQZGen2XEZGholJAJiNUgYAAAAALBQVFeX23JEjR0xMAsBslDIAAAAAYLG2bdu6nK9YscLkJADMRCkDAAAAABbr16+fy/mBAwdMTgLATJQyAAAAAGCxrl27upxnZ2ebnASAmShlAAAAAMBivXv3djkvKytTZmamyWkAmIVSBgAAAAAsFh8f7/bcyZMnTUwCwEyUMgAAAABgsYSEBLfn8vPzTUwCwEyUMgAAAABgAzExMS7nx48fNzkJALNQygAAAACADURHR7ucs9gvUHdRygAAAACADbh7UobXl4C6i1IGAAAAAGwgLCzM5by0tNTkJADMQikDAAAAADaQmJjocp6ammpyEgBmoZQBAAAAABsIDAy0OgIAk1HKAAAAAIANuFs7pkmTJiYnAWAWShkAAAAAsIFz5865nLOmDFB3UcoAAAAAgA2cP3/e5bygoMDkJADMQikDAAAAADYQHBzscp6Xl2dyEgBmoZQBAAAAABsIDQ11OS8rKzM5CQCzUMoAAAAAgA00atTI5fzs2bMmJwFgFkoZAAAAALCBM2fOuJyfPn3a5CQAzEIpAwAAAAA24G7r66ioKJOTADALpQwAAAAA2MDx48ddznlSBqi7KGUAAAAAwAbcPRHj7rUmAN6PUgYAAAAAbKBnz54u52lpaSosLDQ5DQAzUMo"
在函数中使用这个变量:
File? file;
GlobalKey<SfSignaturePadState> signaturePadKey = GlobalKey();
我正在使用此功能将标志保存到图像中:
saveImage() async {
final data = await signaturePadKey.currentState!.toImage(pixelRatio: 3.0);
final imageByteData = await data.toByteData(format:
ui.ImageByteFormat.png);
Uint8List uint8List = imageByteData!.buffer.asUint8List();
Directory appDocDir = await getApplicationDocumentsDirectory();
String filePath = '${appDocDir.path}/image.png';
file = File(filePath);
file?.writeAsBytesSync(uint8List);
await file?.writeAsBytes(uint8List);
print('Image saved to: $filePath');
}
标牌是:
SfSignaturePad(
key: signaturePadKey,
minimumStrokeWidth: 2,
maximumStrokeWidth: 4,
strokeColor: Colors.green,
backgroundColor: Colors.grey[350],
),
来自这个 package pub.dev