【发布时间】:2020-03-10 23:25:01
【问题描述】:
我正在尝试将图像作为 Uint8List 从 Flutter 传递给原生代码 Android/iOS,但在 iOS 端出现错误。我正在修改一个插件,我以前从未在 iOS 中开发过。 这是从小部件中捕获图像并将 Uint8List 发送到本机代码的 Flutter 代码。
Future<void> _capturePng() async {
RenderRepaintBoundary boundary =
globalKey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage(pixelRatio: 1.50);
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
printer.printImage(pngBytes);
}
在 Android 中,我使用的是 Kotlin:
private fun printImage(call: MethodCall, result: Result) {
val image = call.arguments as ByteArray
val res = mPrinterPlugin.printImage(image)
result.success(res)
}
在 iOS 中,插件是用 Objective-C 编写的。我为我的图片添加了此检查
else if([@"imagePrint" isEqualToString:call.method]){
NSData *imgBytes = call.arguments;
UIImage *label = [UIImage imageWithData:imgBytes];
}
我在 iOS 中看到 Uint8List 是 FlutterStandardTypedData typedDataWithBytes,但是当我将 imgBytes 类型设置为它时出现错误。
【问题讨论】:
标签: android ios objective-c flutter