Google maps 如何从Flatter web中的小部件创建图像?

Google maps 如何从Flatter web中的小部件创建图像?,google-maps,flutter,google-maps-markers,flutter-web,flutter-image,Google Maps,Flutter,Google Maps Markers,Flutter Web,Flutter Image,为了在谷歌地图上显示自定义小部件,我使用了一个非常方便的功能,将任何小部件(包括包含图像的小部件)转换为图像,然后将其转换为我需要的Uint8List。它在iOS和Android上运行得非常好 Future createImageFromWidget(小部件小部件){ 最终RenderPaintBoundary RepaitBoundary=RenderPaintBoundary(); 最终渲染视图渲染视图=渲染视图( 子项:RenderPositionedBox(对齐方式:alignment.

为了在谷歌地图上显示自定义小部件,我使用了一个非常方便的功能,将任何
小部件
(包括包含图像的小部件)转换为
图像
,然后将其转换为我需要的
Uint8List
。它在iOS和Android上运行得非常好

Future createImageFromWidget(小部件小部件){
最终RenderPaintBoundary RepaitBoundary=RenderPaintBoundary();
最终渲染视图渲染视图=渲染视图(
子项:RenderPositionedBox(对齐方式:alignment.center,子项:重新绘制边界),
配置:ViewConfiguration(大小:const size.square(300.0),devicePixelRatio:ui.window.devicePixelRatio),
窗口:空,
);
最终PipelineOwner PipelineOwner=PipelineOwner()…根节点=renderView;
renderView.prepareInitialFrame();
最终BuildOwner BuildOwner=BuildOwner(focusManager:focusManager());
最终RenderObjectToWidgetElement根元素=RenderObjectToWidgetAdapter(
容器:重新绘制边界,
孩子:方向性(
textDirection:textDirection.ltr,
child:IntrinsicHeight(child:IntrinsicWidth(child:widget)),
),
).AttachToRedertree(建筑业主);
buildOwner..buildScope(rootElement)…finalizeTree();
pipelineOwner..flushLayout()…flushCompositingBits()…flushPaint();
返回RepaitBoundary.toImage(像素比率:ui.window.devicePixelRatio)
.then((image)=>image.toByteData(格式:ui.ImageByteFormat.png))
.then((byteData)=>byteData.buffer.asUint8List());
}
但不幸的是,当我尝试在Web上使用此功能时,我得到以下错误:

不支持的操作:Web上不支持toImage

现在,flatter支持
Image.toByteData
Picture.toImage
,但我不知道如何在我的案例中使用它

事实上,问题是——如何重新构建此功能,使其也能在Web上工作


谢谢,我很乐意为您提供任何想法。重新绘制边界。
toImage
功能取决于
场景。toImage
,根据相关评论,该功能尚未在Web上实现。
这个问题目前也被取消了优先级。

toImage()在
颤振构建WEB
参数上放置
--dart define=flatter\u WEB\u USE\u SKIA
时起作用

该方法在没有此参数的情况下在本地工作

我在看过包文档后发现了这个解决方案,包文档还使用了toImage()

编辑

我在通过iPhone访问应用程序时发现了一些问题,从小部件生成图像是可行的,但是我在项目中的一些动画停止了工作

我发现了这一点,我将仅使用参数
--dart define=flatter\u WEB\u AUTO\u DETECT=true
进行一些测试,以查看flatter WEB在桌面、android和iOS上是否正常工作

编辑2


在MacOs上进行了一些测试后,toImage()方法也能正常工作。

谢谢您的提示!但在此PR中,无意使
重新绘制边界.toImage
可能是
场景.toImage
。PR显示其合并到颤振主通道。你能切换你的频道并再次测试吗?@AbhilashChandran我正在使用主分支。不幸的是,此PR并不意味着要实现
repainboundary.toImage
。因此,我正在寻找一种解决方案,它不需要
repaitbundary.toImage