查找并使用软件包来构建Dart和Flutter应用 Find and use packages to build Dart and Flutter apps

常用开源库大纲

文档地址 文档内容描述
原生平台有关的第三方库 - 地图(地图显示、定位、经纬度等)
- 二维码
- WebView(Flutter和JavaScript交互)
- 图表库
- 权限库(移动端App需要申请权限,必备)
- 统计(统计App的有关数据:比如日活跃量、用户量、下载量、在线时长等)
- 分享和登陆(QQ、微信、微博等平台的分享和登陆)
- 推送(把服务端的消息推送到移动设备上必备的)
- IM(即时通讯(聊天)等使用场景)
- RTC(音视频会议通话等使用场景)
- 视频播放(本地视频、网上视频或者rtmp源格式)
- 支付(使用支付宝、微信支付等支付方式)
- SMS(短信验证码)
- 网页页面跳转到App具体页面(APP的链接化)
- 一个好玩的可库:PWA(基于Dart的PWA的一个库)
数据有关的第三方库 - 网络请求(加载网络数据,发送数据到服务端)
- 类型编解码的库(字符编解码)- 序列化
- Json解析(json解析成Map或对象)
- 几个常用Json库的比较
- 编解码、加密解密(AES、RSA等)有关的库
- 系统平台有关的库(设备信息、蓝牙、wifi、文件等)
- 国际化和本地化(多国语言版本)
- 图片加载和缓存
- 数据存储、缓存有关的库
- 路由(导航切换)
- 消息传递通信有关
- 视频 & 音频处理
- Rx系列(异步任务流的操作、(注:Rx是一种思想,各类常用语言都有这个技术,如:RxJava、RxKotlin、RxJs、RxSwift等))
UI界面展示有关第三方库 - 弹窗和提示窗有关的库
- 图标有关的开源库
- 富文本
- MarkDown
- 动画有关的库
- 针对Android和iOS平台适配的库
- 日历库(主要用于显示和操作日历)
- 日期,时间,日期时间,icon,自定义数据的选择器(很全面)
- 图片选择的库
- 联系人选择的库
- 颜色选择的库
- 轮播图有关的库(以及Tab PagerView有关的库)
- 导航栏有关的库(库)
- 列表有关的库
GSYGithubAppFlutter使用过的库与插件

原生平台有关的第三方库

由于开发中会用到一些三方的sdk,但是国内的sdk目前还没有支持Flutter,我在pub上面收集了一些相关的三方库,也不知道效果如何,待检验,欢迎各位试用给出反馈

地图(地图显示、定位、经纬度等)

库名 描述 GitHub链接
map_view iOS和Android上显示谷歌地图的Flutter插件 [

](https://pub.dartlang.org/packages/map_view) | | flutter_map | 基于leaflet的Flutter地图包 | johnpryan/flutter_map | | location | 处理Android和iOS上的位置
它还提供位置更改时的回调 | Lyokone/flutterlocation | | latlong | 计算通用的纬度和经度的轻量级库 | MikeMitterer/dart-latlong |

二维码

库名 描述 GitHub链接
scan 扫描小部件树中的qrcode和条形码。
从pat解码qrcode和条形码图像
qr_flutter QR.Flutter是一个Flutter库,基于QR-Dart,可通过Widget或自定义Paint进行简单快速的QR码渲染。可配置的输出大小、填充、背景和前景颜色。可以导出图像数据。不需要Internet连接 lukef/qr.flutter
barcode_scan 用于扫描2D条形码和QRCodes的Flutter插件 mintware-de/flutter_barcode_reader
qrcode_reader 使用相机读取二维码的Flutter插件 villela/flutter_qrcode_reader

WebView(Flutter和JavaScript交互)

库名 描述 GitHub链接
flutter_webview_plugin 允许Flutter与原生Webview进行通信的插件 dart-flitter/flutter_webview_plugin

图表库

库名 描述 GitHub链接
charts-common Material Design风格的图表库 google/charts
charts-flutter 通用的图表库组件 google/charts
flutter_circular_chart 让你使用flutter轻松创建的动画圆形图控件的库 xqwzts/flutter_circular_chart

权限库(移动端App需要申请权限,必备)

库名 描述 GitHub链接
simple_permissions 用于android和ios的请求权限的库 Ethras/flutter_simple_permissions
flutter_simple_permissions 权限申请的库

统计(统计App的有关数据,比如日活跃量、用户量、下载量、在线时长等)

库名 描述 GitHub链接
flutter_umeng_analytics 这个库集成了友盟统计sdk(网友写的,并非官方的) pedia/flutter_umeng_analytics
janalytics 极光统计SDK的Flutter官方版本
- 目前友盟的U-App移动统计还没有推出Flutter版本的插件库 -

分享和登陆(QQ、微信、微博等平台的分享和登陆)

库名 描述 GitHub链接
sharesdk ShareSDK官方推出的功能的Flutter插件,用于分享、登陆等社交功能
share 支持分享的flutter插件 flutter/plugins
flutter_qq 这个库集成了QQ登录、QQ分享、QQ空间分享 marekchen/flutter_qq
flutter_wechat 这个库集成了微信,支持微信登录、分享、支付 pj0579/flutter_wechat
- 极光针对Android和iOS各自都有SDK,只是目前极光还没有把分享和登陆集成到Flutter里
- 目前友盟的U-Share社会化分享还没有推出Flutter版本的插件库

推送(把服务端的消息推送到移动设备上必备的)

库名 描述 GitHub链接
jpush-flutter 极光推送官方的插件库 jpush/jpush-flutter-plugin
mobpush Mob官方的推送插件。使用此插件能够帮助您在使用 Flutter 开发应用时,快速地实现推送功能 MobClub/MobPush-for-Flutter
- 目前友盟的U-push推送还没有推出Flutter版本的插件库 -

IM(即时通讯(聊天)等使用场景)

库名 描述 GitHub链接
rongcloud_im_plugin 基于融云 iOS/Android 平台的 IMLib SDK rongcloud/rongcloud-im-flutter-sdk
rongcloud/imkit-flutter-quickstart
jmessage-flutter 极光官方推出的IM聊天、社交功能的插件 jpush/jmessage-flutter-plugin

RTC(音视频会议通话等使用场景)

库名 描述 GitHub链接
rongcloud_rtc_plugin 基于 融云 iOS/Android 平台的 RTCLib SDK rongcloud/rongcloud-rtc-flutter-sdk
Agora-Flutter-Quickstart 声网官方集成的RTC SDK示例 AgoraIO-Community/Agora-Flutter-Quickstart
- 目前极光的JMRTC还没有推出Flutter版本的插件库。(极光针对Android和iOS各自都有SDK,只是目前极光还没有把JMRTC集成到Flutter里面) -

视频播放(本地视频、网上视频、或者rtmp源格式)

库名 描述 GitHub链接
my_aliplayer 集成了阿里云播放器,可以用来播放视频,也可以播放rtmp格式 hyz1992/my_aliplayer

支付(使用支付宝、微信支付等支付方式)

库名 描述 GitHub链接
flutter_alipay 这个库继承了支付宝,兼容android和ios best-flutter/flutter_alipay
目前的做法是:自己去把支付宝和微信分别集成

SMS(短信验证码)

库名 描述 GitHub链接
mobsms 为开发者提供全球通用的短信验证码工具。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现获取验证码功能
jverify 极光认证整合了三大运营商的网关认证能力,为开发者提供了一键登录和号码认证功能,目前极光把这些集成到Flutter里 jpush/jverify-flutter-plugin

网页页面跳转到App具体页面(APP的链接化)

库名 描述 GitHub链接
moblink MobLink提供Web与APP直接跳转的完全免费产品服务,实现网页间直接跳转升级为APP间直接跳转。
- 极光有一个JMLink SDK,目前有Android和iOS版,还没有Flutter版本,坐等完善。 -

一个好玩的库

库名 描述 GitHub链接
pwa 基于Dart的PWA应用程序的库 isoos/pwa

数据有关的第三方库

网络请求(加载网络数据,发送数据到服务端)

库名 描述 GitHub链接
http 该软件包包含一组高级函数和类,可以轻松使用HTTP资源。它与平台无关,可以在命令行和浏览器上使用 dart-lang/http
dio Dart的一个强大的Http客户端,支持拦截器、全局配置、FormData、请求取消、文件下载、超时等 flutterchina/dio
http_multi_server dart:io HttpServer包装器,用于处理来自多个服务器的请求 dart-lang/http_multi_server
jaguar_retrofit Dart版本的Retrofit库,用于实现一个HTTP客户端API生成器。(我给它点评:666!思想都是相通的) Jaguar-dart/client

类型编解码的库(字符编解码)

库名 描述 GitHub链接
html_unescape 用于解决HTML编码字符串的Dart库。支持所有命名字符引用(如 )
小数字符引用(如á)
十六进制字符引用(如á)
filiph/html_unescape
gbk2utf8 官方的http还不能支持中文gbk的解析,这个项目就是为了解决gbk转成utf-8编码的 jzoom/gbk2utf8
best-flutter/gbk2utf8

序列化

JSON解析(json解析成Map或对象)

库名 描述 GitHub链接
codable 用于将动态结构化数据(JSON,YAML)转换为Dart类型的库 stablekernel/dart-codable
Dson DSON是一个将Dart对象转换为JSON的库。(用于web)这个库是Dartson的一个分支,但又有不同 drails-dart/dson
luisvt/dson

Github上面的库或者IDE插件

  • json_to_dart 根据json生成Dart实体类
  • JSONFormat4Flutter 这是一个Android Studio的辅助插件,将JSONObject格式的String解析成Dart的实体类
  • JsonToDartWeb 是一个全平台的json转Dart的工具,支持包括:Win、Mac、Web以及(Linux待测试)

几个常用Json库的比较

方式 大小 (js) 序列化 (dart) 反序列化 (dart) 序列化 (js) 反序列化 (js)
https://github.com/drails-dart/dart-serialise
json_serializable 80 KB 9.09 ms 6.61 ms 8.23 ms 8.12 ms
Serializable 79 KB 6.1 ms 6.92 ms 4.37 ms
DSON 94 KB 12.72 ms 11.15 ms 16.64 ms 17.94 ms
Dartson 86 KB 9.61 ms 6.81 ms 8.58 ms 7.01 ms
Manual 86 KB 8.29 ms 5.78 ms 10.7 ms 7.9 ms
Interop 70 KB 61.55 ms 14.96 ms 2.49 ms 2.93 ms
Jaguar_serializer 88 KB 8.57 ms 6.58 ms 10.31 ms 8.59 ms
Jackson (Groovy) 496 ms 252 ms n/a n/a

反序列化(将Dart文件转换成json字符串)

库名 描述 GitHub链接
Dartson 一个Dart库,可用于将Dart对象转换为JSON字符串 eredo/dartson

让JSON在手机上可视化的插件(可以体验一下)

库名 描述 GitHub链接
json_table 这个Flutter软件包提供了一个Json Table小部件,用于直接显示json(Map)中的表。还支持列切换 apgapg/json_table
flutter_json_widget 这是一个用于显示Json对象的组件,可以查看Json的内容(相当于Flutter版的JsonViewer的工具) demdog/flutter_json_widget

编解码、加密解密(AES、RSA等)有关的库

库名 描述 GitHub链接
ninja 在Dart的Converter和Codec接口上完善的AES以及RSA加密解密算法的库。 ninja-dart/ninja
archive 为各种存档和压缩格式提供编码器和解码器,如zip,tar,bzip2,gzip和zlib。(不知道移动端能否用得到,文档说服务端和web端可以用。) brendan-duncan/archive

系统平台有关的库(设备信息、蓝牙、wifi、文件等)

库名 描述 GitHub链接
分享(官方的库)
share 用于通过平台共享UI共享内容,使用Android上的ACTION_SEND意图和iOS上的UIActivityViewController flutter/plugins
获取本地文件
path_provider 用于获取Android和iOS文件系统上的常用位置,例如temp和app数据目录 flutter/plugins
读写sp文件
shared_preferences 用于读写简单键值对的Flutter插件。包装iOS上的NSUserDefaults和Android上的SharedPreferences flutter/plugins
网络状态有关
connectivity 用于发现Android和iOS上的网络状态(WiFi和移动/蜂窝)连接 flutter/plugins
设备信息
device_info 提供有关设备(品牌,型号等)的详细信息,以及应用程序正在运行的Android或iOS版本 flutter/plugins
蓝牙
flutter_blue 这是跨平台的蓝牙sdk pauldemarco/flutter_blue
flutter_ble_lib 这是一个支持蓝牙连接的flutter库。它里面使用RxAndroidBle和RxBluetoothKit作为本地库 Polidea/FlutterBleLib

国际化和本地化(多国语言版本)

库名 描述 GitHub链接
intl 这个包提供国际化和本地化功能,包括消息翻译、复数和性别、日期/数字格式和解析以及双向文本 dart-lang/intl

图片加载和缓存

使用Image.network,或者使用下面这个库:

库名 描述 GitHub链接
cached_network_image Flutter库来加载和缓存网络图像。也可以与占位符和错误小部件一起使用 Baseflow/flutter_cached_network_image

数据存储、缓存有关的库

库名 描述 GitHub链接
sqflite SQLite的Flutter插件,一个自包含的高可靠性嵌入式SQL数据库引擎 tekartik/sqflite
file_cache 为flutter package项目缓存Json,Buffer,FileCacheImage pedia/file_cache

路由(导航切换)

库名 描述 GitHub链接
fluro 最好用的路由导航框架。功能:简单的路线导航;函数处理程序(映射到函数而不是路径);通配符参数匹配;查询字符串参数解析;内置常用转换;简单的定制转换创建。 theyakka/fluro

消息传递通信有关

库名 描述 GitHub链接
flutter_local_notifications 一个跨平台的显示本地notifications的插件 MaikuB/flutter_local_notifications
local_notifications 这个库能让你在Android和iOS上创建Notifications很简单
url_launcher 用于在Android和iOS上启动URL。支持网络,电话,短信和电子邮件方案 flutter/plugins
firebase_messaging 一款跨平台的消息传递解决方案,可让您在Android和iOS上可靠地传递消息 FirebaseExtended/flutterfire
event_bus 一个使用Dart流进行解耦应用程序的简单事件总线的库 marcojakob/dart-event-bus

视频 & 音频处理

库名 描述 GitHub链接
video_player Flutter官方的视频库(也可以用于直播),用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。支持主流直播流。该库底层使用的ExoPlayer播放器。更多关于ExoPlayer播放器支持的视频格式资料请看官方文档ExoPlayer播放器支持的视频格式 flutter/plugins
video_launcher 视频播放器
flute_music_player 基于Flutter的材料设计音乐播放器与音频插件播放本地音乐文件. iampawan/Flute-Music-Player
audioplayer 一个播放远程或本地音频文件Flutter音频插件 rxlabz/audioplayer
audioplayers 这是rxlabz的audioplayer的一个分支,不同之处在于它支持同时播放多个音频并显示音量控制。 luanpotter/audioplayer

Rx系列

异步任务流的操作、(注:Rx是一种思想,各类常用语言都有这个技术,如:RxJava、RxKotlin、RxJs、RxSwift等

库名 描述 GitHub链接
rxdart RxDart是一种基于ReactiveX的谷歌Dart反应性函数编程库。谷歌Dart自带了一个非常不错的流API;RxDart没有尝试提供这个API的替代方案,而是在它上面添加了一些功能 ReactiveX/rxdart
rx_widgets rx_widgets是一个包含基于流的Flutter Widgets和Widget帮助程序/便利类的程序包,它们有助于反应式编程风格,特别是与RxDart和RxCommands结合使用 escamoteur/rx_widgets
rx_command RxCommand是针对事件处理程序的基于Reactive Extensions(Rx)的抽象。它基于ReactiveUI框架的ReactiveCommand。它大量使用了RxDart包 fluttercommunity/rx_command

UI界面展示有关第三方库

弹窗和提示窗有关的库

库名 描述 GitHub链接
font_awesome_flutter 图标字体的一个库 fluttercommunity/font_awesome_flutter
fluttertoast 用于Android和ios的toast消息库 PonnamKarthik/FlutterToast
camera 谷歌官方的相机库。用于在Android和iOS上获取有关和控制相机的信息。支持预览相机馈送和捕捉图像,可以用来视频录制,新增对拍照的方向的处理 flutter/plugins

图标有关的开源库

库名 描述 GitHub链接
cupertino_icons Cupertino的图标组件库 flutter/cupertino_icons
flutter_launcher_icons 一个命令行工具,简化了更新Flutter应用程序启动图标的任务。 完全灵活,您可以选择要更新启动图标的平台,如果需要,可以选择保留旧的启动图标,以防将来某个时候还原旧图标 fluttercommunity/flutter_launcher_icons

富文本

库名 描述 GitHub链接
flutter_html_view Flutter没有默认的支持来显示html,所以需要三方的包来显示。这个包可以将html呈现给原生的Widget。(目前支持的标签比较少) PonnamKarthik/FlutterHtmlView
flutter_html_textview 将html呈现为一个Widget,在textview中呈现html https://pub.dev/packages/flutter_html_textview

MarkDown

库名 描述 GitHub链接
flutter_markdown 官方的MarkDown库,它支持原始MarkDown格式,但没有内联Html格式。 flutter/flutter_markdown
markdown 用Dart编写的便携式Markdown库。它可以在客户端和服务器上将Markdown解析为HTML。 dart-lang/markdown
html2md 将html转换为Dart中的MarkDown. jarontai/html2md

动画有关的库

库名 描述 GitHub链接
flutter_villains 页面切换动画的一个库,简化动画操作,你只需要管理好UI就可以了 Norbert515/flutter_villains
flutter_spinkit 加载数据时的各种渐变进度动画(比如:菊花进度、圆环进度、旋转进度等) jogboms/flutter_spinkit
progress_indicators 有一些很酷的动画进度指示器可以使用 wal33d006/progress_indicators

针对Android和ios平台的UI适配库

库名 描述 GitHub链接
platform_aware 为自动适应当前平台而包装的Flutter组件,不需要对iOS和Android进行代码更改。所有小部件都依赖于Theme.of(context).platform来确定当前活动平台的平台。你可以使用Flutter Inspector动态地更改平台 jmgprog/platform_aware
native_widgets 为避免重复代码,只编写一次代码就可以支持两个平台并自动根据平台自动使用对应风格组件,Android将使用材料设计,iOS将使用Cupertino风格的小部件 community/native_widgets

日历库(主要是用于显示和操作日历)

库名 描述 GitHub链接
flutter_calendar 适用于Flutter的日历小组件 apptreesoftware/flutter_calendar
calendarro Flutter的日历组件库。 这个库提供了多种自定义组件的方法 adamstyrc/calendarro

日期,时间,日期时间,icon,自定义数据的选择器(很全面)

库名 描述 GitHub链接
flutter_picker 一个日期,时间,日期时间,icon,自定义数据的选择器,可以居中弹窗,也可以在底部弹出。(目前来看是最全面的一个选择器控件。该插件支持ios和android平台,使用的是ios的风格的UI效果) yangyxd/flutter_picker

图片选择的库

库名 描述 GitHub链接
image_picker 适用于iOS和Android的Flutter插件,用于从图像库中拾取图像,并使用相机拍摄新照片。(功能正在完善中) flutter/plugins
flutter_multiple_image_picker 一个新的Flutter插件,用于从图库中选择多个图像。 mtellect/FlutterMulti-ImagePicker

联系人选择的库

库名 描述 GitHub链接
contact_picker 使用此插件,Flutter应用程序可以地址簿中选择联系人,并将联系人信息返回给应用程序,并且不需要用户的任何特殊权限。目前该插件仅支持选择电话号码 goderbauer/contact_picker

颜色选择的库

库名 描述 GitHub链接
flutter_color_picker 一个简单的颜色选择器,类似于安卓的selector的功能,可以在点击控件时,给控件设置选择器效果 dart-flitter/flutter_color_picker
material_color_picker 这个是Flutter的颜色选择器,基于Google Docs颜色选择器。这个用于选择颜色,你想用哪一个颜色,可以弹窗自由选择
material_pickers 这个是Flutter的颜色选择器,基于Google Docs颜色选择器。这个用于选择颜色,你想用哪一个颜色,可以弹窗自由选择
flutter_colorpicker 这是一个HSV的颜色选择器 mchome/flutter_colorpicker


轮播图有关的库(以及Tab PagerView有关的库)

库名 描述 GitHub链接
flutter_swiper Flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配 best-flutter/flutter_swiper
jzoom/flutter_swiper
infinity_page_view Flutter无限页面视图 jzoom/infinity_page_view
carousel 一个简单的轮播组件(待完善) gbrvalerio/carousel
page_transformer 用于在Flutter中创建漂亮的PageView视差效果的示例项目 alvinlee001/page-transformer


导航栏有关的库(库)

库名 描述 GitHub链接
navigation_bar 一个简易的底部导航栏 zhangruiyu/navigation_bar

列表有关的库

库名 描述 GitHub链接
flutter_pagewise 一次加载一页(或批处理)内容(也称为延迟加载) AbdulRahmanAlHamali/flutter_pagewise
lazy_load_scrollview ScrollView的包装器,可以启用延迟加载,当到达页面底部时将触发回调 QuirijnGB/lazy-load-scrollview

状态响应管理

库名 描述 GitHub链接
provider Provider 状态管理 rrousselGit/provider
Scope Model scope_model 状态管理 brianegan/scoped_model
Redux flutter_redux 状态管理 brianegan/flutter_redux
BLoC flutter_bloc 状态管理 felangel/bloc/tree/master/packages/flutter_bloc
RxDart flutter_rxdart 状态管理
Mobx flutter_mobx 状态管理 mobxjs/mobx.dart

GSYGithubAppFlutter使用过的库与插件

功能 GitHub地址
dio 网络框架 flutterchina/dio
shared_preferences 本地数据缓存 flutter/plugins
fluttertoast toast PonnamKarthik/FlutterToast
device_info 设备信息 flutter/plugins
connectivity 网络链接 flutter/plugins
flutter_markdown markdown解析 flutter/flutter_markdown
json_annotation json模板 dart-lang/json_serializable
json_serializable json模板 dart-lang/json_serializable
url_launcher 启动外部浏览器 flutter/plugins
iconfont 字库图标 chuanci/iconfont
share 系统分享 flutter/plugins
flutter_spinkit 加载框样式 jogboms/flutter_spinkit
get_version 版本信息 fluttercommunity/get_version
flutter_webview_plugin 全屏的webview flutter_webview_plugin
sqflite 数据库 tekartik/sqflite
flutter_statusbar 状态栏 jzoom/flutter_statusbar
flutter_svg svg dnfield/flutter_svg
photo_view 图片预览 renancaraujo/photo_view
flutter_slidable 侧滑 letsar/flutter_slidable
flutter_cache_manager 缓存管理 Baseflow/flutter_cache_manager
path_provider 本地路径 flutter/plugins
permission_handler 权限 baseflowit/flutter-permission-handler
lottie svg动画 xvrh/lottie-flutter
flare 路径动画 gmosx/dart-flare