flutter - 如何从小部件创建图像?
问题描述
如何创建任何特定小部件的图像文件并将其保存在外部存储目录中?
前任。创建RandomWords
小部件的图像。
class RandomWords extends StatefulWidget {
@override
RandomWordsState createState() => new RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
@override
Widget build(BuildContext context) {
final wordPair = WordPair.random();
return Text(wordPair.asPascalCase);
}
}
解决方案
如果您的意思是如何为给定小部件制作屏幕截图,我建议您阅读 Medium 上的这篇文章:在 Flutter 中拍摄某个小部件的“屏幕截图”
特别是该takeScreenshot()
方法可能会引起您的兴趣:
takeScreenShot() async {
RenderRepaintBoundary boundary =
previewContainer.currentContext.findRenderObject();
double pixelRatio = originalSize / MediaQuery.of(context).size.width;
ui.Image image = await boundary.toImage(pixelRatio: pixelRatio);
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
setState(() {
_image2 = Image.memory(pngBytes.buffer.asUint8List());
});
final directory = (await getApplicationDocumentsDirectory()).path;
File imgFile = new File('$directory/screenshot.png');
imgFile.writeAsBytes(pngBytes);
final snackBar = SnackBar(
content: Text('Saved to ${directory}'),
action: SnackBarAction(
label: 'Ok',
onPressed: () {
// Some code
},
),
);
Scaffold.of(context).showSnackBar(snackBar);
}
推荐阅读
- javascript - 如何将参数传递给 API 请求 2,我在反应中从 API 响应 1 收到该参数
- java - 区间列表交叉点
- javascript - 日期未出现 JavaScript
- xamarin.forms - Xamarin 形成多语言不选择其他语言键
- python - 在python opencv中获取强度为255的二值图像的像素位置
- android - 生成签名的 APK 会从工作项目中构建损坏的 APK
- php - 试图获取非对象 Laravel 7.X 的属性“id”
- javascript - 在 Node.js 中处理异常并将错误输出发送到 HTML
- python - 如何使 DataFrame 列的其余部分采用函数输出的值?
- regex - 仅当字符串/行以组之前的特定字符开头或包含时才捕获重复模式