增長項目的擴展性,下降耦合性,提升開發速度。使數據雙向流動,狀態控制更爲靈活,開發更爲規範,項目結構更爲清晰。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緩存
當你clone下項目後,能夠看到一下幾個文件:
main ///入口
base_framework ///bedrock 框架核心文件夾
I10n /// I10n插件建立,也多是得你本身手動建立,具體能夠百度I10n 瞭解
generated ///I10n 在你編輯語言文件後自動生成的 ,請不要編輯這個文件夾下的內容
page ///你的項目頁面
service_api ///項目接口 對應原生的repository
我暫時沒有打算把base_framework摘出來,經過pub來集成,由於我的可能都有本身的定製需求,pub集成並不便於按照本身的需求修改。
何況,直接clone集成仍是很是簡單的,只須要clone項目後將除了base_framework的其它文件夾刪除便可。
複製代碼
主要分爲兩部分:功能性演示和綜合性演示。請直接clone項目進行運行瀏覽,我在DEMO加了詳盡的註釋,強烈建議運行和閱讀DEMO的代碼。
複製代碼
連接:Bedrockcookie
再次感謝廣大開源者的奉獻和大佬的分享,菜鳥的成長離不開各位的幫助。
此框架屬於菜雞初試身手,稚嫩之處還請海涵,不足之處歡迎斧正,不勝感激。複製代碼