打造一个完整的Flutter APP项目!

作者: 飞鱼_9d08 | 来源:发表于2020-04-20 22:07 被阅读0次

    作者:Sky24n
    链接:https://www.jianshu.com/p/4230654a101c

    Flutter版WanAndroid App,旨在打造一款完整的Flutter应用项目。

    包含启动页,引导页,主题色切换,应用国际化多语言,版本更新等功能,项目主框架采用响应式编程RxDart和BLoC,由于目前项目功能尚未完善,代码还有待优化,后续项目重构整理好后,会全部开源出来,敬请期待!欢迎下载体验。

    有关项目最新动态,可以关注App内第一条Hot Item信息。

    网络框架DioUtil,屏幕适配ScreenUtil

    Flutter常用工具类库 flustars

    v0.1.6(2018.12.20)
    新增网络请求工具DioUtil, 单例模式,可输出请求日志。

    // 打开debug模式.
    DioUtil.openDebug(); 
    
    // 配置网络参数.
    Options options = DioUtil.getDefOptions();
    options.baseUrl = "http://www.wanandroid.com/";
    HttpConfig config = new HttpConfig(options: options);
    DioUtil().setConfig(config);
    
    // 两种单例请求方式.
    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;
      }
    }
    
    // 网络请求日志  
    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

    //如果设计稿尺寸与默认配置一致,无需该设置。  配置设计稿尺寸 默认 360.0 / 640.0 / 3.0
    setDesignWHD(_designW,_designH,_designD);
    
    //返回根据屏幕宽适配后尺寸(单位 dp or pt)
    ScreenUtil.getInstance().getWidth(100.0);  
    ScreenUtil().getWidth(100.0); 
    
    //返回根据屏幕高适配后尺寸(单位 dp or pt)
    ScreenUtil.getInstance().getHeight(100.0); 
    ScreenUtil().getHeight(100.0);  
    
    //返回根据屏幕宽适配后字体尺寸
    ScreenUtil.getInstance().getSp(12.0); 
    ScreenUtil().getSp(100.0);   
    
    

    已开源

    ① 网络框架
    ② 闪屏广告页
    ③ 启动页
    ④ 引导页
    ⑤ 主题色切换
    ⑥ 国际化

    更新说明

    v0.1.2 (2018.12.20)

    ① 网络框架DioUtil
    ② 合并flutter_demos

    v0.1.1 (2018.11.19)

    ① 新增启动页
    ② 新增引导页
    ③ 修复banner无法点击bug,一些优化

    v0.1.0 (2018.11.16)

    ① 堪称完美的UI界面almost
    ② 支持国际化
    ③ 支持更换主题色

    主界面

    引导页

    启动页

    闪屏广告页

    分类页面

    Web页双击Title滚动到顶部

    多语言

    设置主题色

    我的 : Flutter开源库集合

    GitHub : flutter_wanandroid

    APK :点击下载 v0.1.2

    相关文章

      网友评论

        本文标题:打造一个完整的Flutter APP项目!

        本文链接:https://www.haomeiwen.com/subject/zgusihtx.html