[关闭]
@universal 2019-09-09T03:22:34.000000Z 字数 2112 阅读 369

flutter 前期开源项目调研


网络请求库

flutter中的网络请求:

  1. HttpClient httpClient = new HttpClient();
  2. HttpClientRequest request = await httpClient.getUrl(url);
  3. HttpClientResponse response = await request.close();
  4. httpClient.close();

开源库:dio
dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器
dio请求:

  1. void getHttp() async {
  2. try {
  3. Response response = await Dio().get("http://www.baidu.com");
  4. print(response);
  5. } catch (e) {
  6. print(e);
  7. }
  8. }

数据存储

flutter官方插件:
Shared preferences plugin : NSUserDefaults (iOS) and SharedPreferences (Android)。实现kv存储。
path_provider plugin: 文件存储
sqflite plugin:futter上的SQLite插件,支持SQL语句

图片加载

flutter中的image widget支持网络图片的加载以及缓存(内存缓存)
Image.Network

  1. new Image.network(
  2. imgUrl,
  3. width: 150.0,
  4. height: 150.0,
  5. )
  6. );

开源项目:cached_network_image / FadeImage
cached_network_image支持二级缓存 和 自定义缓存器(存储时间、最大数量以及请求方法,底层存储和检索利用的是flutter_cache_manager。

  1. CachedNetworkImage(
  2. imageUrl: "http://via.placeholder.com/350x150",
  3. placeholder: (context, url) => new CircularProgressIndicator(),
  4. errorWidget: (context, url, error) => new Icon(Icons.error),
  5. ),

FadeImage: 优化了过渡动画

数据解析

原生flutter:encode/decode接口。JSON.decode() 返回一个动态类型的Map。
flutter官方:json_serializable, 自动生成反序列化与序列化的模板代码。

日志收集

原生: Dart提供了全局的异常捕获功能。FlutterError.onError / runZoned
dart层主要收集的是flutter framework层的日志。flutter framework层的异常通常并不会引起crash,这与dart的单线程模型有关,当前任务的异常并不会终止整个任务队列的运行。flutter engine的错误(引起crash)可以直接交给native收集。
FlutterError.onError处理框架层自动添加的异常,主要以页面渲染为主。
runZoned 可以捕获 Flutter 层全局的未处理异常信息,比如数组越界,空对象异常。

咸鱼flutter开源:

flutter-go:一个开发者帮助 APP,包含 Flutter 常用 140+ 组件的demo 演示与中文文档,并且集成到了一个官方App中。

fish-redux: Fish Redux是一个基于Redux数据管理的组装式Flutter应用框架。
Redux是一种单向数据流架构: view ->action ->Reducer ->store
Fish Redux更加细腻精致,解耦内聚做的更好。

FlutterBoost: Flutter-Native混合解决方案,可以在当前项目同时管理Native页面和Flutter页面,实现原生与flutter页面的之间路由。

AspectD: AOP for Flutter 。基于编译期修改的AOP方案。对业务代码或者flutter 框架执行非侵入式框架改造。

UI相关

富文本:
flutter原生:richText => NSAttributedString
开源项目:RealRichText : 图片+文字的混排(没有支持自定义view的排列)

文字闪烁效果:
开源项目:shimmer

瀑布流效果:
开源项目:flutter_staggered_grid_view ,效果炫酷。(可封装 上拉刷新或者下拉加载更多)(但目前貌似不支持dart2.0)

UI组件开源的思路

  1. 从自身业务出发,利用合适的业务场景抽离一个UI组件
    比如:
    (1) webview组件实现与原生组件的嵌套。 (webview_flutter/flutter_webview_plugin)
    (2)换肤组件

  2. 利用flutter与原生的差距,优化一个UI组件,比如ListView、Toast/Alert,或者按照原生使用api的方式封装flutter的控件。

下一阶段

继续调研flutter中开源的UI组件,确定研究方向。(研究可行性)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注