簡介
增加項目的擴(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)和大佬的分享菠秒,菜鳥的成長離不開各位的幫助。
此框架屬于菜雞初試身手氯迂,稚嫩之處還請海涵践叠,不足之處歡迎斧正,不勝感激嚼蚀。