Bedrock——基于MVVM+Provider的Flutter快速開發(fā)框架

bedrock-screenshot.png
GIF 2020-6-17 16-15-47.gif

簡介

增加項目的擴(kuò)展性安聘,降低耦合性,提高開發(fā)速度麦向。使數(shù)據(jù)雙向流動瘟裸,狀態(tài)控制更為靈活,開發(fā)更為規(guī)范诵竭,項目結(jié)構(gòu)更為清晰话告。

憑著一些開發(fā)經(jīng)驗(其實就是從各原生/Flutter大佬na借鑒),整理出這款MVVM+Provider快速開發(fā)框架卵慰,同時在Pub里面收藏了常用且效果不錯的插件沙郭,完全可以滿足日常開發(fā)(非基礎(chǔ)性的臨時注釋掉了),我在pub和demo里盡可能加了詳盡的注釋以及根據(jù)自己的開發(fā)經(jīng)驗所添加的一些想法裳朋,方便大家快速接入并使用病线。

主要特性

1、MVVM+Provider鲤嫡,低耦合氧苍、邏輯分明、頁面代碼清晰泛范。Provider提供的狀態(tài)管理使頁面控制和展現(xiàn)更為靈活方便

2让虐、全局異常捕捉:接口業(yè)務(wù)型和語法型,業(yè)務(wù)型可根據(jù)需要進(jìn)行處理(如未登錄罢荡、未授權(quán)赡突、超時对扶、無網(wǎng)等等)并實現(xiàn)頁面自動切換,語法型可以跳轉(zhuǎn)到指定頁面避免紅屏(還可在此頁面做日志上傳)惭缰。

3浪南、基礎(chǔ)類Basestate-State、BaseStatelessWidget-StatelessWidget和BaseSkeletonWidget漱受,對常用功能函數(shù)進(jìn)行了封裝络凿,輕松配 置骨架屏、屏幕適配昂羡、異形屏適配等

4絮记、基類ProviderWidget-Provider和ViewstateModel-ChangeNotifier對 provider等的封裝、底層封裝了一些常用狀態(tài)和異常處理功能

5虐先、全局cookie默認(rèn)SharedPreferences怨愤,基礎(chǔ)攔截器自動上傳app版本等(可以根據(jù)需求自定)

6、頁面?zhèn)然顺鲇寂酚晒芾砟K撰洗,常用頁面跳轉(zhuǎn)動畫的封裝等

7、全局toast腐芍、骨架屏差导、緩存、格式化文字猪勇、圖片選擇裁剪和上傳柿汛、瀑布流和各種Util這些都是優(yōu)秀的插件所提供的功能(再次感謝所有開源作者)

8、基于Intl的國際化埠对、APP主題切換。

9裁替、你的viewmodel只要是繼承ViewStateModel项玛,并注冊CacheDataFactory,就可以實現(xiàn)首次加載自動緩存弱判,無網(wǎng)自動顯示上次緩存(緩存方式采用的mmkv 高速緩存)

使用方法

墻裂建議運行DEMO并查看源碼和注釋襟沮,以及pub中的注釋(其中有很多使用頻率很高的插件,可以查看他們的文檔昌腰,熟練使用能提高開發(fā)效率)开伏。

很簡單,如下操作:
    1遭商、頁面/wiget固灵,繼承Basestate/BaseStatelessWidget
    2、骨架屏繼承BaseSkeletonWidget
    3劫流、ViewModel(VM)繼承 ViewStateModel的子類巫玻,如:SingleViewStateModel丛忆、RefreshListViewStateModel(也可以根據(jù)需求自己封裝)
    
頁面代碼如下(頁面請使用Basestate):

class APageState extends BaseState<APage>{
@override
 Widget build(BuildContext context) {
     return switchStatusBar2Dark(
     ///全局VM 如:用戶VM,可以在登錄登出時對整個項目進(jìn)行狀態(tài)刷新和管理仍秤。
     ///框架自己也定義了一些常用地全局VM  可見DEMO
        child: Consumer<全局VM>(
        builder:(ctx,全局VM,child){
            ///當(dāng)前頁面的VM
            return ProviderWidget<當(dāng)前頁面VM>(
                model:初始化你的vm
                onModelReady:(model){
                    啟動你的model熄诡,///可選
                }
                builder(ctx,你的vm,child){
                    reutrn 你的頁面;
                }
            );
            
        }
        )
     );
 }

}
    
    
你的ViewModel(VM)代碼:
///自定義ViewModel話诗力,繼承自ViewStateModel即可
class YourPageViewModel extends SingleViewStateModel{
    
}

具體使用方法可以見DEMO

GITHUB 集成

當(dāng)你clone下項目后凰浮,可以看到一下幾個文件:
    main ///入口
    base_framework ///bedrock 框架核心文件夾
    I10n  /// I10n插件創(chuàng)建,也可能是得你自己手動創(chuàng)建苇本,具體可以百度I10n 了解
    generated ///I10n 在你編輯語言文件后自動生成的 袜茧,請不要編輯這個文件夾下的內(nèi)容
    page ///你的項目頁面  
    service_api  ///項目接口 對應(yīng)原生的repository
    

我暫時沒有打算把base_framework摘出來,通過pub來集成圈澈,因為個人可能都有自己的定制需求惫周,pub集成并不便于按照自己的需求修改。 
況且康栈,直接clone集成還是非常簡單的递递,只需要clone項目后將除了base_framework的其它文件夾刪除即可。

DEMO

主要分為兩部分:功能性演示和綜合性演示啥么。請直接clone項目進(jìn)行運行瀏覽登舞,我在DEMO加了詳盡的注釋,強(qiáng)烈建議運行和閱讀DEMO的代碼悬荣。

鏈接:Bedrock

https://github.com/bladeofgod/Bedrock

感謝

再次感謝廣大開源者的奉獻(xiàn)和大佬的分享菠秒,菜鳥的成長離不開各位的幫助。
此框架屬于菜雞初試身手氯迂,稚嫩之處還請海涵践叠,不足之處歡迎斧正,不勝感激嚼蚀。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禁灼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子轿曙,更是在濱河造成了極大的恐慌弄捕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件导帝,死亡現(xiàn)場離奇詭異守谓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)您单,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門斋荞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虐秦,你說我怎么就攤上這事譬猫⊙堕埽” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵染服,是天一觀的道長别洪。 經(jīng)常有香客問我,道長柳刮,這世上最難降的妖魔是什么挖垛? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮秉颗,結(jié)果婚禮上痢毒,老公的妹妹穿的比我還像新娘。我一直安慰自己蚕甥,他們只是感情好哪替,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菇怀,像睡著了一般凭舶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爱沟,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天帅霜,我揣著相機(jī)與錄音,去河邊找鬼呼伸。 笑死身冀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的括享。 我是一名探鬼主播搂根,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铃辖!你這毒婦竟也來了剩愧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤澳叉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沐悦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體成洗,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年藏否,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓶殃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡副签,死狀恐怖遥椿,靈堂內(nèi)的尸體忽然破棺而出基矮,到底是詐尸還是另有隱情,我是刑警寧澤冠场,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布家浇,位于F島的核電站,受9級特大地震影響碴裙,放射性物質(zhì)發(fā)生泄漏钢悲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一舔株、第九天 我趴在偏房一處隱蔽的房頂上張望莺琳。 院中可真熱鬧,春花似錦载慈、人聲如沸惭等。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辞做。三九已至,卻和暖如春料扰,著一層夾襖步出監(jiān)牢的瞬間凭豪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工晒杈, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留嫂伞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓拯钻,卻偏偏與公主長得像帖努,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粪般,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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