Flutter組件化

使用Flutter Module實(shí)現(xiàn)組件化的思路:
Flutter組件化

使用Flutter Package實(shí)現(xiàn)組件化思路:
Flutter 組件化開發(fā)實(shí)踐概述

組件化的優(yōu)點(diǎn):

  1. 各個模塊相互獨(dú)立捎废,方便管理
  2. 抽離出功能块促,方便多個app復(fù)用
  3. 方便單元測試

組件化思路:

一务唐、選擇模塊化的方式

有2種方式可實(shí)現(xiàn):Flutter PackageFlutter Module
區(qū)別:

  1. Flutter Package:用于單獨(dú)的Flutter婿崭、Dart代碼,不依賴與原生iOS/Android代碼悯恍,生成的Package目錄里沒有iOS/Android目錄,可創(chuàng)建example flutter項(xiàng)目配合測試。

  2. Flutter Module:常用于在原生iOS/Android項(xiàng)目中集成Flutter項(xiàng)目的混合開發(fā)疲酌,創(chuàng)建的Module中有.iOS/.android目錄,單獨(dú)的Module可單獨(dú)在iOSAndroid上運(yùn)行測試了袁。

二朗恳、模塊存放位置
  1. 可與原有項(xiàng)目放在一起,在pubspec.yaml中使用path來引入
  2. 將模塊放入git庫中载绿,在pubspec.yaml中使用url來引入
  3. 建立私有pub粥诫,將模塊發(fā)布到私有pub
三、將項(xiàng)目劃分不同的模塊
  • 網(wǎng)絡(luò)模塊(Network Package
  • 通用的基礎(chǔ)類和工具類(多個 Common Package
  • 業(yè)務(wù)模塊A(A Package
  • 業(yè)務(wù)模塊B(B Package
  • 業(yè)務(wù)模塊...

單個模塊提供一個對外的dart來供導(dǎo)入使用崭庸,模塊內(nèi)部使用export對內(nèi)部文件進(jìn)行細(xì)粒度的暴露怀浆。

library common_service;

export 'a.dart';
export 'b.dart';
四谊囚、單獨(dú)測試模塊
  1. 如果使用Flutter Module,可單獨(dú)運(yùn)行Module
  2. 如果使用Flutter Package执赡,可創(chuàng)建Flutter example測試項(xiàng)目來測試
五镰踏、加載PackageModule里的資源文件

單個組件的安裝包和整個組件的安裝包資源位置不一樣。

  • PackageModule里運(yùn)行:正常的使用方法沙合,比如'images/base/login_button.png'
  • 在主項(xiàng)目里運(yùn)行PackageModule:在正常使用方法的路徑前增加'packages/模塊名/'奠伪,比如'packages/login_module/images/base/login_button.png'
資源引入路徑不一致解決方案:

可通過主項(xiàng)目運(yùn)行時,往模塊中傳入自定義參數(shù)首懈,根據(jù)參數(shù)判斷資源引用的路徑前是否添加'packages/模塊名/'绊率。
bool.fromEnvironment可用來判斷是否是生產(chǎn)環(huán)境,比如final isProduct = const bool.fromEnvironment('dart.vm.product');猜拾,也可以用來判斷自定義參數(shù)即舌,比如flutter run --dart-define=IS_ADD_PACKAGE_PATH=true,參數(shù)名稱為IS_ADD_PACKAGE_PATH挎袜,值為true顽聂。
代碼中使用:

// 定義全局變量
static const IS_ADD_PACKAGE_PATH = bool.fromEnvironment('IS_ADD_PACKAGE_PATH', defaultValue: true);
// 具體使用
'${IS_ADD_PACKAGE_PATH ? 'packages/login_module/' : ''}images/base/login_button.png'
  1. 命令行flutter run運(yùn)行添加自定義參數(shù):
    flutter run --dart-define=IS_ADD_PACKAGE_PATH=true
  2. Android Studio運(yùn)行添加自定義參數(shù):
    main.dart的run/debug configrations中配置,如下:
    image.png
六盯仪、減少各模塊之間的耦合

比如主項(xiàng)目引用模塊紊搪,模塊引用主項(xiàng)目,會出現(xiàn)很多耦合全景,盡量減少耀石。
解決思路:

  1. 組件引入主項(xiàng)目的耦合部分,盡量抽取為公共庫
  2. 在路由上做文章爸黄,減少引入
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滞伟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炕贵,更是在濱河造成了極大的恐慌梆奈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称开,死亡現(xiàn)場離奇詭異亩钟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鳖轰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門清酥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕴侣,你說我怎么就攤上這事焰轻。” “怎么了昆雀?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵鹦马,是天一觀的道長胧谈。 經(jīng)常有香客問我,道長荸频,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任客冈,我火速辦了婚禮旭从,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘场仲。我一直安慰自己和悦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布渠缕。 她就那樣靜靜地躺著鸽素,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亦鳞。 梳的紋絲不亂的頭發(fā)上馍忽,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音燕差,去河邊找鬼遭笋。 笑死,一個胖子當(dāng)著我的面吹牛徒探,可吹牛的內(nèi)容都是我干的瓦呼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼测暗,長吁一口氣:“原來是場噩夢啊……” “哼央串!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碗啄,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤质和,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挫掏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侦另,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年尉共,在試婚紗的時候發(fā)現(xiàn)自己被綠了褒傅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡袄友,死狀恐怖殿托,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剧蚣,我是刑警寧澤支竹,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布旋廷,位于F島的核電站,受9級特大地震影響礼搁,放射性物質(zhì)發(fā)生泄漏饶碘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一馒吴、第九天 我趴在偏房一處隱蔽的房頂上張望扎运。 院中可真熱鬧,春花似錦饮戳、人聲如沸豪治。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽负拟。三九已至,卻和暖如春歹河,著一層夾襖步出監(jiān)牢的瞬間掩浙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工启泣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涣脚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓寥茫,卻偏偏與公主長得像遣蚀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纱耻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容