Skip to content

Instantly share code, notes, and snippets.

@Norbert515
Created May 27, 2021 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Norbert515/d934cbb86aabab1630cd067074bf6c95 to your computer and use it in GitHub Desktop.
Save Norbert515/d934cbb86aabab1630cd067074bf6c95 to your computer and use it in GitHub Desktop.
Framecrate screenshot template
import 'dart:html';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'dart:js';
import 'dart:ui' as ui;
Widget buildShowcaseWidget(BuildContext context) {
// TODO return an instance of your widget here
// Once your done, hit run and 'Screenshot & Publish'
}
// ===========================================================================
// Paste your code here
// ===========================================================================
void main() {
runApp(MaterialApp(
title: 'Snippet',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Snippet(),
));
}
var key = GlobalKey();
class Snippet extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
children: [
Center(
child: RepaintBoundary(
key: key,
child: buildShowcaseWidget(context))),
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.only(bottom: 16),
child: ElevatedButton(
child: Text('Screenshot & Publish'),
onPressed: () {
captureImage();
},
),
),
),
],
);
}
}
Future<void> captureImage() async {
final boundary =
key.currentContext.findRenderObject() as RenderRepaintBoundary;
final image = await boundary.toImage(pixelRatio: 1);
final data = await image.toByteData(format: ui.ImageByteFormat.png);
var parent = context['window'].parent.parent;
parent.postMessage({'data': data}, '*');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment