Bedrock——基於MVVM+Provider的Flutter快速開發框架

簡介

增長項目的擴展性,下降耦合性,提升開發速度。使數據雙向流動,狀態控制更爲靈活,開發更爲規範,項目結構更爲清晰。git

憑着一些開發經驗(其實就是從各原生/Flutter大佬na借鑑),整理出這款MVVM+Provider快速開發框架,同時在Pub裏面收藏了經常使用且效果不錯的插件,徹底能夠知足平常開發(非基礎性的臨時註釋掉了),我在pub和demo裏儘量加了詳盡的註釋以及根據本身的開發經驗所添加的一些想法,方便你們快速接入並使用。github

主要特性

一、MVVM+Provider,低耦合、邏輯分明、頁面代碼清晰。Provider提供的狀態管理使頁面控制和展示更爲靈活方便

二、全局異常捕捉:接口業務型和語法型,業務型可根據須要進行處理(如未登陸、未受權、超時、無網等等)並實現頁面自動切換,語法型能夠跳轉到指定頁面避免紅屏(還可在此頁面作日誌上傳)。

三、基礎類Basestate-State、BaseStatelessWidget-StatelessWidget和BaseSkeletonWidget,對經常使用功能函數進行了封裝,輕鬆配 置骨架屏、屏幕適配、異形屏適配等

四、基類ProviderWidget-Provider和ViewstateModel-ChangeNotifier對 provider等的封裝、底層封裝了一些經常使用狀態和異常處理功能

五、全局cookie默認SharedPreferences,基礎攔截器自動上傳app版本等(能夠根據需求自定)

六、頁面側滑退出,路由管理模塊,經常使用頁面跳轉動畫的封裝等

七、全局toast、骨架屏、緩存、格式化文字、圖片選擇裁剪和上傳、瀑布流和各類Util這些都是優秀的插件所提供的功能(再次感謝全部開源做者)

八、基於Intl的國際化、APP主題切換。

九、你的viewmodel只要是繼承ViewStateModel,並註冊CacheDataFactory,就能夠實現首次加載自動緩存,無網自動顯示上次緩存(緩存方式採用的mmkv 高速緩存)
複製代碼

使用方法

牆裂建議運行DEMO並查看源碼和註釋,以及pub中的註釋(其中有不少使用頻率很高的插件,能夠查看他們的文檔,熟練使用能提升開發效率)。api

很簡單,以下操做:
    一、頁面/wiget,繼承Basestate/BaseStatelessWidget
    二、骨架屏繼承BaseSkeletonWidget
    三、ViewModel(VM)繼承 ViewStateModel的子類,如:SingleViewStateModel、RefreshListViewStateModel(也能夠根據需求本身封裝)
    
頁面代碼以下(頁面請使用Basestate):

class APageState extends BaseState<APage>{
@override
 Widget build(BuildContext context) {
     return switchStatusBar2Dark(
     ///全局VM 如:用戶VM,能夠在登陸登出時對整個項目進行狀態刷新和管理。
     ///框架本身也定義了一些經常使用地全局VM  可見DEMO
        child: Consumer<全局VM>(
        builder:(ctx,全局VM,child){
            ///當前頁面的VM
            return ProviderWidget<當前頁面VM>(
                model:初始化你的vm
                onModelReady:(model){
                    啓動你的model,///可選
                }
                builder(ctx,你的vm,child){
                    reutrn 你的頁面;
                }
            );
            
        }
        )
     );
 }

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

具體使用方法能夠見DEMO緩存

GITHUB 集成

當你clone下項目後,能夠看到一下幾個文件:
    main ///入口
    base_framework ///bedrock 框架核心文件夾
    I10n  /// I10n插件建立,也多是得你本身手動建立,具體能夠百度I10n 瞭解
    generated ///I10n 在你編輯語言文件後自動生成的 ,請不要編輯這個文件夾下的內容
    page ///你的項目頁面  
    service_api  ///項目接口 對應原生的repository
    

我暫時沒有打算把base_framework摘出來,經過pub來集成,由於我的可能都有本身的定製需求,pub集成並不便於按照本身的需求修改。 
何況,直接clone集成仍是很是簡單的,只須要clone項目後將除了base_framework的其它文件夾刪除便可。
複製代碼

DEMO

主要分爲兩部分:功能性演示和綜合性演示。請直接clone項目進行運行瀏覽,我在DEMO加了詳盡的註釋,強烈建議運行和閱讀DEMO的代碼。
複製代碼

連接:Bedrockcookie

github.com/bladeofgod/…app

感謝

再次感謝廣大開源者的奉獻和大佬的分享,菜鳥的成長離不開各位的幫助。
此框架屬於菜雞初試身手,稚嫩之處還請海涵,不足之處歡迎斧正,不勝感激。複製代碼
相關文章
相關標籤/搜索