現在、FCM とローカル通知を Flutter アプリに実装しようとしています。通常の通知用に FCM とローカル通知を正常に構成しましたが、画像と共に表示したい別の種類の通知もあります。アプリがフォアグラウンドにある場合、通知はエラーなしで表示されますが、終了するとアプリ/バックグラウンドに移動パスプロバイダーを使用して画像を保存しようとすると例外が発生します。
例外:
MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)
アプリがフォアグラウンドにないときにパス プロバイダー メソッド チャネルが閉じているため、このエラーが発生していると思います。これを修正するためにできることはありますか? または、flutter_local_notifications
プラグインがビットマップへのファイルパスを必要としない場合、画像を保存して、バックグラウンドで動作する別の方法でパスを取得できますか (パスプロバイダーなし)? (実際に表示したいのは、次のようなリンクからの画像です: https://is1-ssl.mzstatic.com/image/thumb/WNUBiv2P6YSklHn9eA5nlg/1000x1000bb.jpeg )
画像の保存:
static Future<String> saveImage(Image image) {
final completer = Completer<String>();
image.image.resolve(ImageConfiguration()).addListener(ImageStreamListener((imageInfo,_) async {
final byteData = await imageInfo.image.toByteData(format: ImageByteFormat.png);
final pngBytes = byteData.buffer.asUint8List();
final fileName = pngBytes.hashCode;
final directory = await getApplicationDocumentsDirectory();
final filePath = '${directory.path}/$fileName';
final file = File(filePath);
await file.writeAsBytes(pngBytes);
completer.complete(filePath);
}));
return completer.future;
}