前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【flutter】完美解决导入 dart.ui 中缺少 platformViewRegistry.registerViewFactory 方法

【flutter】完美解决导入 dart.ui 中缺少 platformViewRegistry.registerViewFactory 方法

作者头像
圆号本昊
发布2021-12-30 17:24:20
8470
发布2021-12-30 17:24:20
举报
文章被收录于专栏:github@hornhuanggithub@hornhuang

邂逅

很多情景需要使用 package:flutter_web_ui/ui.dart 或者 dart:ui ,比如显示一个网页:

代码语言:javascript
复制
import 'package:flutter_web_ui/ui.dart' as ui;
// 或者 import 'dart:ui' as ui;

ui.platformViewRegistry.registerViewFactory(
        'maphtml',
            (int viewId) => IFrameElement()
          ..allowFullscreen=true
          ..height = '360'
          ..src = 'https://hornhuang.github.io'+_params
          ..style.border = 'none');

运行一下,很不幸收到一朵大红花:

战胜

原因是 'dart:ui' 这个库是 web-only 的,也就是说我们只能在 flutter_web 上用它 ?但是如果在 iOS/android 上也想用怎么办?挑战一下:

  • 这里我们先新建一个 dart 文件:FakeUi.dart
代码语言:javascript
复制
// ignore: camel_case_types
class platformViewRegistry {
  static registerViewFactory(String viewId, dynamic cb) {}
}
  • 然后再新建一个 dart 文件:RealUi.dart
代码语言:javascript
复制
import 'dart:ui' as ui;

// ignore: camel_case_types
class platformViewRegistry {
  static registerViewFactory(String viewId, dynamic cb) {
    // ignore:undefined_prefixed_name
    ui.platformViewRegistry.registerViewFactory(viewId, cb);
  }
}
  • 以后当我们想使用 'dart:ui' 里的内容时,直接通过 FakeUi.dart 就可以啦
代码语言:javascript
复制
import 'FakeUi.dart' if (dart.library.html) 'RealUi.dart' as ui;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 邂逅
  • 战胜
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档