Flutter 常用工具类库 flustars

作者: Sky24n | 来源:发表于2018-12-21 11:17 被阅读16次

    萌新必备工具类库一

    Flutter 常用工具类库 flustars
    ① 网络DioUtil
    ② 屏幕适配ScreenUtil
    ③ 数据存储"同步"SpUtil
    ④ widget渲染监听WidgetUtil

    萌新必备工具类库二

    Dart常用工具类库 common_utils
    ① TimelineUtil : 时间轴.
    ② TimerUtil : 倒计时,定时任务.
    ③ MoneyUtil : 精确转换防止精度丢失,分元互转,支持格式输出.
    ④ LogUtil : 简单封装打印日志.
    ⑤ DateUtil : 日期转换格式化输出.
    ⑥ RegexUtil : 正则验证手机号,身份证,邮箱等.
    ⑦ NumUtil : 保留x位小数.精确加、减、乘、除, 防止精度丢失.
    ⑧ ObjectUtil : 判断对象是否为空(String List Map),判断两个List是否相等.

    1、网络 DioUtil

    网络请求工具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: }
    

    2、屏幕适配 ScreenUtil

    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);   
    

    3、 数据存储 SpUtil

    单例"同步" SharedPreferences 工具类.

    class _MyAppState extends State<MyApp> {
      @override
      void initState() {
        super.initState();
        _loadAsync();
      }
      void _loadAsync() async {
        await SpUtil.getInstance(); //等待Sp初始化完成
        SpUtil.putString("username", "sky224");
        String username = SpUtil.getString("username");
      }
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: new Scaffold(
            body: new Center( child: new Text(' ') ),
            floatingActionButton: FloatingActionButton(onPressed: () {
              String username = SpUtil.getString("username"); //同步获取
            }),
          ),
        );
      }
    }
    

    4、WidgetUtil

    widget渲染完成监听,获取widget宽高,获取widget在屏幕上的坐标。

    WidgetUtil widgetUtil = new WidgetUtil();
    widgetUtil.asyncPrepares(true, (_) {
          print("Widget 渲染完成...");
        });
    Rect rect = WidgetUtil. getWidgetBounds(context);
    Offset offset = WidgetUtil. getWidgetLocalToGlobal(context);
    

    我的       : Flutter开源库集合

    GitHub : flustars

    Pub        : flustars

    Demo    : flutter_wanandroid

    APK        :点击下载 v0.1.2

    Android扫码下载APK:

    flutter_wanandroid

    相关文章

      网友评论

        本文标题:Flutter 常用工具类库 flustars

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