widget_to_image_converter 1.0.1 copy "widget_to_image_converter: ^1.0.1" to clipboard
widget_to_image_converter: ^1.0.1 copied to clipboard

A Flutter FFI plugin to convert a widget to an image. Uses C library to convert the widget to an image.

Widget to Image Converter #

Flutter FFI plugin for converting widgets to JPEG and PNG images using native C code.

Features #

  • Convert Flutter widgets to JPEG and PNG images
  • Automatic conversion state management
  • JPEG quality configuration (1-100)
  • Cross-platform support (iOS, Android, macOS)

Installation #

Add to your pubspec.yaml:

dependencies:
  widget_to_image_converter: ^1.0.0
  path_provider: ^2.0.0

Usage #

Basic Example #

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:widget_to_image_converter/widget_to_image_converter.dart';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(const MaterialApp(home: MyApp()));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return WidgetToImageProvider(
      child: Scaffold(
        body: Column(
          children: [
            // Wrap widget to convert
            WidgetToImageWrapper(
              child: Container(
                width: 300,
                height: 200,
                decoration: BoxDecoration(
                  gradient: LinearGradient(colors: [Colors.blue, Colors.purple]),
                  borderRadius: BorderRadius.circular(20),
                ),
                child: const Center(
                  child: Text('Widget to convert', style: TextStyle(color: Colors.white)),
                ),
              ),
            ),
            const SizedBox(height: 20),
            const SomeButton(),
          ],
        ),
      ),
    );
  }
}


class SomeButton extends StatelessWidget {
  const SomeButton({super.key});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () async {
        final controller = WidgetToImageProvider.of(context, listen: false);
        final tempDir = await getTemporaryDirectory();
        final path = '${tempDir.path}/widget.jpg';
        await controller.saveAsJpeg(outputPath: path, quality: 90);
      }, 
      child: const Text('Save as JPEG'),
    );
  }
}

Advanced Usage #

class AdvancedExample extends StatefulWidget {
  const AdvancedExample({super.key});

  @override
  _AdvancedExampleState createState() => _AdvancedExampleState();
}

class _AdvancedExampleState extends State<AdvancedExample> {
  late final WidgetToImageController _controller;

  @override
  void initState() {
    super.initState();
    _controller = WidgetToImageController();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  Future<void> _saveHighQuality() async {
    final tempDir = await getTemporaryDirectory();
    final path = '${tempDir.path}/high_quality.jpg';
    await _controller.saveAsJpeg(
      outputPath: path,
      quality: 95,
      pixelRatio: 2.0,
    );
  }

  @override
  Widget build(BuildContext context) {
    return WidgetToImageProvider(
      controller: _controller,
      child: Scaffold(
        body: Column(
          children: [
            WidgetToImageWrapper(child: YourWidget()),
            ElevatedButton(
              onPressed: _saveHighQuality,
              child: const Text('Save High Quality'),
            ),
          ],
        ),
      ),
    );
  }
}

API Reference #

WidgetToImageProvider #

Wrapper for providing controller to widgets.

WidgetToImageController #

  • saveAsJpeg({required String outputPath, double? pixelRatio, int quality = 90})
  • saveAsPng({required String outputPath, double? pixelRatio})
  • saveAsRgbaFile({required String outputPath, double? pixelRatio})

WidgetToImageWrapper #

Wrapper widget for automatic RepaintBoundary creation.

Requirements #

  • Dart 3.0.0+
  • Flutter 3.0.0+

License #

MIT License

0
likes
160
points
144
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter FFI plugin to convert a widget to an image. Uses C library to convert the widget to an image.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

ffi, flutter, plugin_platform_interface

More

Packages that depend on widget_to_image_converter