一、插件库官网地址 https://pub-web.flutter-io.cn
Flutter现在用的人越来越多了,经常使用的好看或者实用的轮子,车才能跑的又快又稳。
二、状态管理
响应式的编程框架中都会有一个永恒的主题——“状态(State)管理”,无论是在 React/Vue(两者都是支持响应式编程的 Web 开发框架)还是 Flutter 中,他们讨论的问题和解决的思想都是一致的。所以,如果你对React/Vue的状态管理有了解,可以跳过本节。言归正传,我们想一个问题,StatefulWidget
的状态应该被谁管理?Widget本身?父 Widget ?都会?还是另一个对象?答案是取决于实际情况!以下是管理状态的最常见的方法:
- Widget 管理自己的状态。
- Widget 管理子 Widget 状态。
- 混合管理(父 Widget 和子 Widget 都管理状态)。
状态管理插件:
现在Flutter的状态管理方案很多,比如: redux、bloc、state、provider、Getx。
Provider:Provider 是 Flutter 社区开发的状态管理库,建立在 InheritedWidget 之上,提供了更加便捷的 API 和更灵活的状态管理方式。(推荐)
Getx: 不仅具有状态管理的功能,还具有路由管理、主题管理、国际化多语言管理、Obx局部更新、网络请求、数据验证等功能,相比其他状态管理插件Getx 简单、功能强大并且高性能。(推荐)
Bloc:Bloc 是 Flutter 社区开发的基于流(Stream)的状态管理库,可以将状态和事件分离,并且提供了强大的异步处理能力。
Redux: 遵循严格的单向数据流模式,动作触发状态变更。适合大型复杂应用,对状态的管理较为规范和严格。 (很少用)
StatefulWidget 的 State: 较为基础和简单,直接与特定的 Widget 相关联。适用于较小规模、状态不太复杂的场景
个人推荐:Provider 以及 Getx。
三、网络请求以及数据解析
1、Http请求库-dio
直接使用HttpClient发起网络请求是比较麻烦的,很多事情得我们手动处理,如果再涉及到文件上传/下载、Cookie管理等就会非常繁琐。幸运的是,Dart社区有一些第三方http请求库,用它们来发起http请求将会简单的多
https://pub.dev/packages/dio
2、数据转model
https://pub.dev/packages/json_serializable
四、Flutter国际化
使用Intl (opens new window)包我们不仅可以非常轻松的实现国际化,而且也可以将字符串文本分离成单独的文件,方便开发人员和翻译人员分工协作。为了使用Intl (opens new window)包我们需要添加两个依赖: