Flutter - dart.ui 没有方法'platformViewRegistry'

Posted

技术标签:

【中文标题】Flutter - dart.ui 没有方法\'platformViewRegistry\'【英文标题】:Flutter - dart.ui no method 'platformViewRegistry'Flutter - dart.ui 没有方法'platformViewRegistry' 【发布时间】:2021-01-24 04:16:12 【问题描述】:

我在 Flutter web 上工作,我想渲染一个 html 代码。由于flutter_webview_plugin 不支持flutter web,但我正在使用IFrameElement 和HtmlElementView。但是我在使用 dart.ui 时遇到了这个问题,platformViewRegistry 方法没有定义。

错误信息:

通过前缀“ui”引用名称“platformViewRegistry”,但在使用该前缀导入的任何库中都没有定义它。

import 'dart:ui' as ui;
......
 ui.platformViewRegistry.registerViewFactory(
        createdViewId,
            (int viewId) => html.IFrameElement()
          ..width = MediaQuery.of(context).size.width.toString() //'800'
          ..height = MediaQuery.of(context).size.height.toString() //'400'
          ..srcdoc = """<!DOCTYPE html><html>
          <head><title>Page Title</title></head><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"""            
          ..style.border = 'none');

示例代码来自:https://***.com/a/60089273/12789200

我阅读了一些解决方案来解决这个问题。但我不想降级我的颤振版本。由于在过去的一个月里 Flutter 发生了很多变化

颤振医生

[√] Flutter (Channel beta, 1.22.1, on Microsoft Windows [Version 10.0.19041.508], locale en-US)
[√] android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Chrome - develop for the web
[√] Android Studio (version 4.0)
[√] VS Code (version 1.49.3)
[√] Connected device (3 available)

这个问题还有其他解决方案吗?或者我可以在 Flutter Web 上用于 WebView 的另一个示例。

【问题讨论】:

【参考方案1】:

据我所知,我已经尝试了几种解决方案,显然 'dart:ui' 包中存在问题。 我尝试过的解决方案是:

    尝试使用 WebView 小部件 //失败 尚无网络支持 尝试在 HTML 而不是 CanvasKit 上进行渲染 //UI 看起来很垃圾 尝试编辑**analysis_options.yaml** 尝试在//ignore: undefined_prefixed_name 的代码上方添加注释

所有这些解决方案都提到了其他错误,解决方案是使用一个名为: 来自https://pub.dev/packages/universal_ui 的universal_ui,显然与'dart:ui' 包相同,但包含所有方法。 希望这对你有用!

【讨论】:

universal_ui 不是空安全的,如果您现在在项目中是空安全的,想知道您在使用什么。

以上是关于Flutter - dart.ui 没有方法'platformViewRegistry'的主要内容,如果未能解决你的问题,请参考以下文章

dart:ui:1:错误:未找到:dart:ui。颤振/飞镖:

集成测试时如何解决 Flutter 中请求“dart.ui”的问题

Flutter Dart Framework原理简解

flutter手写板2.0 橡皮擦

flutter基础总结

Flutter自定义CustomPainter中获取ImageShader参数ui.Image对象的方法