Flutterで画像をSNSにシェアしよう。

2021/07/24に公開

記事を書いた目的:①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