首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为混合web /移动颤动项目导入js.dart和html.dart

为混合web /移动颤动项目导入js.dart和html.dart
EN

Stack Overflow用户
提问于 2021-10-07 10:04:21
回答 1查看 226关注 0票数 1

我使用的是Flutter 2.5.2。我有一个项目,这是用于网络和移动(安卓/ iOS)。

有一个特殊的小部件,在为web部署时,我需要使用一个版本的小部件,它使用JS和HTML包。当部署到移动设备时,我需要使用一个不同的版本,它只使用标准的Flutter小部件。(原因很复杂--我在flutter中嵌入了Unity )。

举个例子,我有一个用于web的web_player.dart版本:

代码语言:javascript
运行
AI代码解释
复制
import 'dart:html' as html;
import 'package:js/js.dart';
import 'package:flutter/material.dart';

@JS('loadPlayer')
external String loadPlayer();

class WebVersion extends StatelessWidget {
  const WebVersion({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // Use the HTML package and return an HtmlElementView
  }
}

这个mobile_player.dart版本适用于移动设备:

代码语言:javascript
运行
AI代码解释
复制
class MobileVersion extends StatelessWidget {
  const MobileVersion({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text("Mobile version")
  }
}

为web构建是很好的。问题是,当我为移动端构建时,构建会中断:

代码语言:javascript
运行
AI代码解释
复制
Error: Not found: 'dart:js'

代码语言:javascript
运行
AI代码解释
复制
Error: Not found: 'dart:html'

我知道这些包在移动平台中并不存在,我正在尝试找到一种解决方法。我最初尝试根据kIsWeb标志有条件地使用WebPlayerMobilePlayer小部件,但这没有任何区别(我猜是因为kIsWeb不是一个编译时间常量?)

因此,我尝试使用条件导入来解决这个问题。因此,我创建了一个存根player_stub.dart

代码语言:javascript
运行
AI代码解释
复制
import 'package:flutter/material.dart';


Widget getPlayer() => throw UnsupportedError("This is a stub");

我将此存根导入到包装器Player小部件中:

代码语言:javascript
运行
AI代码解释
复制
import 'package:mypackage/player_stub.dart'
  if (dart.library.io) 'package:mypackage/mobile_player.dart'
  if (dart.library.js) 'package:mypackage/web_player.dart';

class Player extends StatelessWidget {

  const Player ();

  @override
  Widget build(BuildContext context) {
    return getPlayer();
  }
}

然后在我的mobile_player.dart中添加了存根实现

代码语言:javascript
运行
AI代码解释
复制
Widget getPlayer() => MobilePlayer();

在我的web_player.dart

代码语言:javascript
运行
AI代码解释
复制
Widget getPlayer() => WebPlayer();

我希望这能通过编译时树抖动或其他方式解决构建错误,但它没有。

我该如何解决这个问题?我完全被难住了。

EN

回答 1

Stack Overflow用户

发布于 2021-10-08 04:09:41

我只想为其他寻找答案的人回答我自己的问题:解决方案是将存根、移动小部件和web小部件移动到单独的dart库中。

该库在其根my_player_package.dart文件中使用如下条件导出:

代码语言:javascript
运行
AI代码解释
复制
export 'src/player_stub.dart'
  if (dart.library.js) 'src/web_player.dart'
  if (dart.library.io) 'src/mobile_player.dart';

因此,现在我在pubspec.yaml中引用了单独的库

代码语言:javascript
运行
AI代码解释
复制
dependencies:

  ...

  my_player_package:
    path: ../my_player_package

我现在可以为web和移动设备进行import 'package:my_player_package/my_player_package.dart'和构建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69485846

复制
相关文章
Office 文档解析 文档格式和协议
本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这个标准的协议和格式
林德熙
2020/07/28
3K0
Python 3 Office文档格式转换
上次讲到,要快速提取word与excel文件中的图片,有一个前提条件,那就是操作的目标文件扩展名必须是要为.docx\.xlsx才可以。这次我们用Python 3来实现.doc\.xls文件自动转换为.docx\.xlsx。
用户6184845
2019/09/26
1.3K0
如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL
CanaryTokenScanner是一款功能强大的Canary令牌和可疑URL检测工具,该工具基于纯Python开发,可以帮助广大研究人员快速检测Microsoft Office和Zip压缩文件中的Canary令牌和可疑URL。
FB客服
2024/02/26
1910
如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL
如何实现Office文档在线预览
5、支持跨域,支持所有设备以及浏览器。客户端使用任何浏览器(包括移动设备上的)、微信都可以预览。
usdoc
2022/04/14
5.5K0
Office文件的Open Xml 格式
此时可以对xml文件进行操作,要想再次把这已经解压后的文件还原为原office文件,必须要把已经解压后的文件添加成.zip文件再把后缀名改为.xlsx文件才能打开,否则添加为.rar文件后再改后缀名为.xlsx文件时会出现乱码的情况!
阿豪聊干货
2018/08/09
1.1K0
office2021:office2021下载 如何在Office文档页面上放置水印
Microsoft office是一款广泛使用的办公软件套装,它包含了多种不同的应用程序,如Word、Excel、PowerPoint、Outlook等。这些应用程序可以帮助用户进行各种任务,例如创建文档、制作表格、创建演示文稿、管理电子邮件等。
小昭在奔跑
2023/04/20
2.7K0
office2021:office2021下载 如何在Office文档页面上放置水印
如何用Doxgen制作chm格式文档
对程序员来说,在开发自己的接口时,制作一个easy-go的文档也是coding中必不可少的一步,而且是相当重要的一步,虽然国内很多程序员,现在都略过了这一步。 本文的前提是,大家已经在代码中写了符合生成注释文档的注释,关于注释的规则,可以参考百度文库里的一个文档 “使用Doxygen生成chm帮助文档使用详解”, 链接地址:http://wenku.baidu.com/view/110caf8002d276a200292e44.html 接下来,就开始我们的简单制作chm文档之旅吧,嘿嘿! 系统信息:win
_gongluck
2018/03/08
2.8K0
如何用Doxgen制作chm格式文档
揭秘如何使用跨平台的EvilClippy创建恶意MS Office文档
今天给大家介绍的是一款名叫EvilClippy的开源工具,EvilClippy是一款专用于创建恶意MS Office测试文档的跨平台安全工具,它可以隐藏VBA宏和VBA代码,并且可以对宏代码进行混淆处理以增加宏分析工具的分析难度。当前版本的EvilClippy支持在Linux、macOS和Windows平台上运行,实现了跨平台特性。
FB客服
2019/05/16
2.3K0
揭秘如何使用跨平台的EvilClippy创建恶意MS Office文档
干货 | Office文档钓鱼之如何快速进行宏免杀
Office 宏,译自英文单词 Macro。宏是 Office 自带的一种高级脚本特性,通过 VBA 代码, 可以在 Office 中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中 的一些任务自动化。而宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样 的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在 Normal 模板上。
HACK学习
2021/12/08
2.7K0
干货 | Office文档钓鱼之如何快速进行宏免杀
dotnet OpenXML 修复 Office 文档里面包含格式不正确的 Uri 而无法解析
在使用 OpenXML 解析 Office 文档,无论是 PPT 还是 Word 还是 Excel 文档,都会使用标准方式解析。而此时的文档如果包含了错误的 Url 格式,例如不正确的邮件名的时候,将会在解析的时候出错。本文告诉大家如何修复这个问题
林德熙
2021/01/07
1.8K0
dotnet OpenXML 修复 Office 文档里面包含格式不正确的 Uri 而无法解析
php如何实现图片格式转换
开发过程中总会遇到一些需求需要对图片格式进行转换。比如 gif转png,jpg转png
超级小可爱
2023/02/20
8340
springboot实战之office文档在线预览
文档在线预览在企业级应用开发也算是比较常遇见的需求了,通常处理这方面的需求大致有如下的方案,
lyb-geek
2019/11/27
7.7K0
springboot实战之office文档在线预览
在线文档预览方案-office web apps
用户1168362
2018/01/05
7.4K0
在线文档预览方案-office web apps
MongoDB:如何将 BSON 文档转换为可读的格式
二进制 Javascript 对象表示法 (BSON) 是 JSON 文档的二进制编码序列化。JSON 更易于理解,因为它是人类可读的,但与 BSON 相比,它支持的数据类型更少。BSON 已扩展为添加一些可选的非 JSON 原生数据类型,例如日期和二进制数据。
用户4235284
2023/10/14
1.2K0
如何在chrome中直接打开、编辑、保存Word/Excel/PPT等Office文档?
在2015年的主流浏览器版本中,因为可以直接调用微软开源的 ActiveX控件,可以实现微软Office软件的在线编辑及审阅功能,但是从2015年开始,各大主流浏览器先后取消了对 NPAPI插件,导致在线编辑Office软件成为了一个难题。虽然后来有商业公司开发的相关控件,但是还是无法 克服ActiveX控件固有的缺陷,不仅限制了浏览器的版本,还需要用户单独设置浏览器安全设置,导致用户体验极差。
喵大侠
2021/08/13
4.7K0
如何在chrome中直接打开、编辑、保存Word/Excel/PPT等Office文档?
【Python】解析 Xml 格式的文档
注意:xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全。
杨丝儿
2022/02/25
1.9K0
Apache POI 读取 Microsoft Office Excel 文档
Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准(OOXML)和微软的 OLE 2 Compound Document 格式(OLE2)。
HoneyMoose
2020/12/03
6600
Apache POI 读取 Microsoft Office Excel 文档
OFFICE 文档转换为html在线预览
网上一般介绍的都是使用JODConverter ,通过java来调用转换服务,其实还有一种替代方案,就是使用pyodconverter,python版本的转换脚本https://github.com/mirkonasato/pyodconverter/
JadePeng
2022/03/24
4.9K0
OFFICE 文档转换为html在线预览
dotnet Open XML 如何判断一份 Office 文档是否被加密
在拿到一份 PPTX 文档,或一份 Word 的 docx 文档,如何判断这份文档是被加密的
林德熙
2020/09/24
1.4K0
dotnet Open XML 如何判断一份 Office 文档是否被加密
Office文档嵌入对象点击执行的社工技巧
Microsoft Office相信大家都用过。Office在文档中嵌入对象极大的方便了我们的日常使用,但同时也为我们带来了众多安全问题。可以说,Office文档为攻击者提供了各种方法来诱骗受害者运行任意代码。当然,攻击者也可能会尝试利用Office漏洞,但更常见的情况是,攻击者会向受害者发送包含恶意宏或嵌入式(Packager)可执行文件的Office文档。
FB客服
2018/09/21
2.1K0
Office文档嵌入对象点击执行的社工技巧

相似问题

Google脚本函数将curl数据提取到Google Sheets

10

将PubMed数据导入Google Sheets

10

将Google Sheets数据放入Redshift

111

将gzipped数据导入Google Sheets

21

使用Java将数据写入Google Sheets

118
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档