healthrian_render_canvas 0.0.1 copy "healthrian_render_canvas: ^0.0.1" to clipboard
healthrian_render_canvas: ^0.0.1 copied to clipboard

A library to render JSON descriptions onto a Canvas.

example/lib/main.dart

import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:healthrian_render_canvas/healthrian_render_canvas.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Healthrian Render Canvas Demo',
      theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Uint8List? _renderedImage;
  bool _isLoading = false;

  final Map<String, dynamic> _sampleData = {
    'document': {
      'layers': [
        {
          'name': 'main_drawing',
          'elements': [
            {
              "type": "line",
              "stroke": "#110000",
              "stroke_width": 5,
              "points": [
                {"x": 10, "y": 245},
                {"x": 200, "y": 245},
              ],
            },
            {
              "type": "line",
              "stroke": "#000000",
              "stroke_width": 5,
              "points": [
                {"x": 170, "y": 10},
                {"x": 170, "y": 290},
              ],
            },
          ],
        },
      ],
    },
  };

  Future<void> _renderCanvas() async {
    setState(() {
      _isLoading = true;
    });

    final renderer = HealthrianRenderCanvas(dpi: 200);

    try {
      final image = await renderer.render(_sampleData);
      setState(() {
        _renderedImage = image;
      });
    } catch (e, s) {
      debugPrint('Error rendering canvas: $e \n$s');
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Render Canvas Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_isLoading)
              const CircularProgressIndicator()
            else if (_renderedImage != null)
              Container(
                width: 300,
                height: 400,
                decoration: BoxDecoration(border: Border.all(color: Colors.grey)),
                child: Image.memory(
                  _renderedImage!,
                  fit: BoxFit.contain,
                ),
              )
            else
              const Text('Press the button to render sample JSON'),
            const SizedBox(height: 20),
            ElevatedButton(onPressed: _renderCanvas, child: const Text('Render Sample')),
          ],
        ),
      ),
    );
  }
}
0
likes
160
points
104
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A library to render JSON descriptions onto a Canvas.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter

More

Packages that depend on healthrian_render_canvas