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 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 ""; } }