⛳
Flutterで画像をSNSにシェアしよう。
記事を書いた目的:①SNSに画像をあげる。通常ユーザーは、スクリーンショットで対応している。
②参考文献では、エラーが出て実装までに時間がかかったため。
具体的な実装方法:widgetを画像にする
参考文献:https://qiita.com/tetsufe/items/40e2050285f0fb414ac4
記載内容:参考文献のwidget_to_image_converter.dartの部分でエラーが出て解決ができなかったため、私が実装した方法を記載する。
import 'dart:async';
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
class WidgetToImageConverter {
Future<ByteData> exportToImage(GlobalKey globalKey) async {
ui.Image image;
bool catched = false;
final RenderRepaintBoundary boundary =
globalKey.currentContext.findRenderObject() as RenderRepaintBoundary;
try {
final image = await boundary.toImage(
pixelRatio: 3,
);
final ByteData byteData = await image.toByteData(
format: ui.ImageByteFormat.png,
);
catched = true;
return byteData;
} catch (exception) {
catched = false;
await Future.delayed(
const Duration(milliseconds: 1),
);
return await exportToImage(globalKey);
}
}
}
解説:①try catchをかました。
②参考文献に載っているTimerではなく、 return await Future.delayed(...) に変えた。
Discussion