一個(gè)完整的Flutter APP項(xiàng)目

Flutter版WanAndroid App,旨在打造一款完整的Flutter應(yīng)用項(xiàng)目。

包含啟動(dòng)頁(yè),引導(dǎo)頁(yè),主題色切換,應(yīng)用國(guó)際化多語(yǔ)言,版本更新等功能,項(xiàng)目主框架采用響應(yīng)式編程RxDart和BLoC,由于目前項(xiàng)目功能尚未完善,代碼還有待優(yōu)化,后續(xù)項(xiàng)目重構(gòu)整理好后,會(huì)全部開(kāi)源出來(lái),敬請(qǐng)期待!歡迎下載體驗(yàn)。

有關(guān)項(xiàng)目最新動(dòng)態(tài),可以關(guān)注App內(nèi)第一條Hot Item信息。

網(wǎng)絡(luò)框架DioUtil,屏幕適配ScreenUtil

Flutter常用工具類庫(kù) flustars

v0.1.6(2018.12.20)
新增網(wǎng)絡(luò)請(qǐng)求工具DioUtil, 單例模式,可輸出請(qǐng)求日志。

// 打開(kāi)debug模式.
DioUtil.openDebug(); 

// 配置網(wǎng)絡(luò)參數(shù).
Options options = DioUtil.getDefOptions();
options.baseUrl = "http://www.wanandroid.com/";
HttpConfig config = new HttpConfig(options: options);
DioUtil().setConfig(config);

// 兩種單例請(qǐng)求方式.
DioUtil().request<List>(Method.get, "banner/json");
DioUtil.getInstance().request(Method.get, "banner/json");

//示例
LoginReq req = new LoginReq('username', 'password');
DioUtil().request(Method.post, "user/login",data: req.toJson());

//示例
FormData formData = new FormData.from({
      "username": "username",
      "password": "password",
    });
DioUtil().requestR(Method.post, "user/login",data: rformData);

//解析示例 
class WanRepository {
  Future<List<BannerModel>> getBanner() async {
    BaseResp<List> baseResp = await DioUtil().request<List>(
        Method.get, WanAndroidApi.getPath(path: WanAndroidApi.BANNER));
    List<BannerModel> bannerList;
    if (baseResp.code != Constant.STATUS_SUCCESS) {
      return new Future.error(baseResp.msg);
    }
    if (baseResp.data != null) {
      bannerList = baseResp.data.map((value) {
        return BannerModel.fromJson(value);
      }).toList();
    }
    return bannerList;
  }
}

// 網(wǎng)絡(luò)請(qǐng)求日志  
I/flutter ( 5922): ----------------Http Log----------------
I/flutter ( 5922): [statusCode]:   200
I/flutter ( 5922): [request   ]:   method: GET  baseUrl: http://www.wanandroid.com/  path: lg/collect/list/0/json
I/flutter ( 5922): [reqdata   ]:   null
I/flutter ( 5922): [response  ]:   {data: {curPage: 1, datas: [], offset: 0, over: true, pageCount: 0, size: 20, total: 0}, errorCode: 0, errorMsg: }

v0.1.5(2018.12.14)
ScreenUtil 新增屏幕適配,不依賴context

//如果設(shè)計(jì)稿尺寸與默認(rèn)配置一致,無(wú)需該設(shè)置。  配置設(shè)計(jì)稿尺寸 默認(rèn) 360.0 / 640.0 / 3.0
setDesignWHD(_designW,_designH,_designD);

//返回根據(jù)屏幕寬適配后尺寸(單位 dp or pt)
ScreenUtil.getInstance().getWidth(100.0);  
ScreenUtil().getWidth(100.0); 

//返回根據(jù)屏幕高適配后尺寸(單位 dp or pt)
ScreenUtil.getInstance().getHeight(100.0); 
ScreenUtil().getHeight(100.0);  

//返回根據(jù)屏幕寬適配后字體尺寸
ScreenUtil.getInstance().getSp(12.0); 
ScreenUtil().getSp(100.0);   

已開(kāi)源

① 網(wǎng)絡(luò)框架
② 閃屏廣告頁(yè)
③ 啟動(dòng)頁(yè)
④ 引導(dǎo)頁(yè)
⑤ 主題色切換
⑥ 國(guó)際化

更新說(shuō)明

v0.1.2 (2018.12.20)

① 網(wǎng)絡(luò)框架DioUtil
② 合并flutter_demos

v0.1.1 (2018.11.19)

① 新增啟動(dòng)頁(yè)
② 新增引導(dǎo)頁(yè)
③ 修復(fù)banner無(wú)法點(diǎn)擊bug,一些優(yōu)化

v0.1.0 (2018.11.16)

① 堪稱完美的UI界面almost
② 支持國(guó)際化
③ 支持更換主題色

主界面

image

引導(dǎo)頁(yè)

image

啟動(dòng)頁(yè)

image

閃屏廣告頁(yè)

image

分類頁(yè)面

image

Web頁(yè)雙擊Title滾動(dòng)到頂部

image

多語(yǔ)言

image

設(shè)置主題色

image

我的 : Flutter開(kāi)源庫(kù)集合

GitHub : flutter_wanandroid

APK :點(diǎn)擊下載 v0.1.2

Android掃碼下載APK:

image

作者:Sky24n
鏈接:http://www.itdecent.cn/p/4230654a101c
來(lái)源:簡(jiǎn)書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容