import 'dart:convert';
|
import 'dart:io';
|
import 'dart:typed_data';
|
import 'dart:ui';
|
|
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/material.dart';
|
import 'package:flutter/rendering.dart';
|
|
///对widget截图
|
|
class CaptureWidget extends StatelessWidget {
|
//截图组件
|
GlobalKey rootWidgetKey = GlobalKey();
|
final Widget widget;
|
final CaptureController captureController;
|
|
CaptureWidget({required this.widget, required this.captureController}) {
|
captureController.setGlobalKey(rootWidgetKey);
|
}
|
|
@override
|
Widget build(BuildContext context) {
|
return RepaintBoundary(key: rootWidgetKey, child: widget);
|
}
|
}
|
|
class CaptureController {
|
GlobalKey? _globalKey;
|
|
setGlobalKey(GlobalKey globalKey) {
|
_globalKey = globalKey;
|
}
|
|
Future<String> capturePng() async {
|
try {
|
RenderRepaintBoundary? boundary = _globalKey!.currentContext!
|
.findRenderObject() as RenderRepaintBoundary;
|
var image = await boundary.toImage(pixelRatio: 3.0);
|
ByteData? byteData = await image.toByteData(format: ImageByteFormat.png);
|
Uint8List pngBytes = byteData!.buffer.asUint8List();
|
String str = base64.encode(pngBytes);
|
return str;
|
} catch (e) {}
|
return "";
|
}
|
}
|