irpas技术客

【Flutter】为Flutter添加宏定义,跨平台助力,实现多平台发布_风的影子fengdeyingzi_flutter 宏定义

网络 7941

我们知道,在Flutter中可以用 Platform.operatingSystem 实现平台差异代码,但它有一些不足:

一部分插件在web或windows平台无法编译,但在其它平台却要用到它;将所有代码都一起编译(哪怕是当前平台不需要的),增加了安装包体积;需要对代码实现多渠道发布,不同渠道使用不同代码或插件。

为了解决上述问题,我实现了一个宏定义工具,可以像类似C语言那样在dart代码中添加#ifdef #else,具体使用方法如下 1.在main.dart中添加宏定义

// #ifdef WEB /* print('Hello web!');*/ // #else print("Hello windows"); // #endif

2.在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.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Flutter #宏定义