无法使用 Flutter Channel 共享文件 - 缺少插件异常
Cannot Share File Using Flutter Channel - Missing Plugin Exception
我使用 flutter-darts 创建了 QR 码 生成应用程序。除了共享部分,一切都很好。我使用以下代码分享我生成的 png 图片.
Future<Null> _captureAndSharePng() async {
try {
RenderRepaintBoundary boundary =
globalKey.currentContext.findRenderObject();
var image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final file = await new File('${tempDir.path}/image.png').create();
await file.writeAsBytes(pngBytes);
/*final channel = const MethodChannel('channel:me.alfian.share/share');
assert(image != null);
return channel.invokeMethod('shareImage', image);*/
final channel = const MethodChannel('channel:me.alfian.share/share');
channel.invokeMethod('shareFile', 'image.png');
} catch (e) {
print(e.toString());
}
}
当我尝试使用上述功能分享我生成的图像时,发生异常,
我应该怎么做才能解决这个问题。我认为这会发生是因为通道参数。
我做了类似的事情,发现 Plugin esys_flutter_share:
带来了调用跨平台共享的最佳方法。
试试这个代码片段,这对我有用:
await Share.file(
'Export', 'export.png', file.readAsBytesSync(), 'export/png');
你还需要修改MainActivity
class
按照这个答案:
我使用 flutter-darts 创建了 QR 码 生成应用程序。除了共享部分,一切都很好。我使用以下代码分享我生成的 png 图片.
Future<Null> _captureAndSharePng() async {
try {
RenderRepaintBoundary boundary =
globalKey.currentContext.findRenderObject();
var image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final file = await new File('${tempDir.path}/image.png').create();
await file.writeAsBytes(pngBytes);
/*final channel = const MethodChannel('channel:me.alfian.share/share');
assert(image != null);
return channel.invokeMethod('shareImage', image);*/
final channel = const MethodChannel('channel:me.alfian.share/share');
channel.invokeMethod('shareFile', 'image.png');
} catch (e) {
print(e.toString());
}
}
当我尝试使用上述功能分享我生成的图像时,发生异常,
我应该怎么做才能解决这个问题。我认为这会发生是因为通道参数。
我做了类似的事情,发现 Plugin esys_flutter_share:
带来了调用跨平台共享的最佳方法。
试试这个代码片段,这对我有用:
await Share.file(
'Export', 'export.png', file.readAsBytesSync(), 'export/png');
你还需要修改MainActivity
class
按照这个答案: