我们知道,在Flutter中可以用 Platform.operatingSystem 实现平台差异代码,但它有一些不足:
一部分插件在web或windows平台无法编译,但在其它平台却要用到它;将所有代码都一起编译(哪怕是当前平台不需要的),增加了安装包体积;需要对代码实现多渠道发布,不同渠道使用不同代码或插件。为了解决上述问题,我实现了一个宏定义工具,可以像类似C语言那样在dart代码中添加#ifdef #else,具体使用方法如下 1.在main.dart中添加宏定义
// #ifdef WEB /* print('Hello web!');*/ // #else print("Hello windows"); // #endif2.在pobspec.yaml中添加宏定义,并实现多个宏判断
#ifdef ANDROID IOS APP flutter_bugly: ^0.4.3 #集成bugly 用于更新 #endif注意:#ifdef代码需要写入单行注释中,因为dart本身并不支持,在编译代码前运行命令,转换所有宏: 例如,编译Windows平台前,运行命令
definetool.exe -define WINDOWS编译安卓前,运行命令:
definetool.exe -define ANDROID这个工具本身是用dart写的,所以支持linux、windows、mac平台 下载地址: https://github.com/fengdeyingzi/definetool/releases/tag/v1.3
开源地址: https://github.com/fengdeyingzi/definetool
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |