@universal
2019-09-09T03:22:34.000000Z
字数 2112
阅读 369
flutter中的网络请求:
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.getUrl(url);
HttpClientResponse response = await request.close();
httpClient.close();
开源库:dio
dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器
dio请求:
void getHttp() async {
try {
Response response = await Dio().get("http://www.baidu.com");
print(response);
} catch (e) {
print(e);
}
}
flutter官方插件:
Shared preferences plugin : NSUserDefaults (iOS) and SharedPreferences (Android)。实现kv存储。
path_provider plugin: 文件存储
sqflite plugin:futter上的SQLite插件,支持SQL语句
flutter中的image widget支持网络图片的加载以及缓存(内存缓存)
Image.Network
new Image.network(
imgUrl,
width: 150.0,
height: 150.0,
)
);
开源项目:cached_network_image / FadeImage
cached_network_image支持二级缓存 和 自定义缓存器(存储时间、最大数量以及请求方法,底层存储和检索利用的是flutter_cache_manager。
CachedNetworkImage(
imageUrl: "http://via.placeholder.com/350x150",
placeholder: (context, url) => new CircularProgressIndicator(),
errorWidget: (context, url, error) => new Icon(Icons.error),
),
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-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 框架执行非侵入式框架改造。
富文本:
flutter原生:richText => NSAttributedString
开源项目:RealRichText : 图片+文字的混排(没有支持自定义view的排列)
文字闪烁效果:
开源项目:shimmer
瀑布流效果:
开源项目:flutter_staggered_grid_view ,效果炫酷。(可封装 上拉刷新或者下拉加载更多)(但目前貌似不支持dart2.0)
从自身业务出发,利用合适的业务场景抽离一个UI组件
比如:
(1) webview组件实现与原生组件的嵌套。 (webview_flutter/flutter_webview_plugin)
(2)换肤组件
利用flutter与原生的差距,优化一个UI组件,比如ListView、Toast/Alert,或者按照原生使用api的方式封装flutter的控件。
继续调研flutter中开源的UI组件,确定研究方向。(研究可行性)