MENU

Flutter的需要与原生交互的一些常用库

December 6, 2018 • Read: 49 • Android,Flutter

Flutter的需要与原生交互的一些常用库

【说明】由于这些库一直在更新,请自己选择合适的稳定版本下载。


谷歌官方的针对Dart语言的一些实用性的功能以及扩展的库 -- Quiver

Quiver是一组针对Dart的实用程序库,它使使用许多Dart库变得更容易、更方便,或者增加了额外的功能。

github地址 https://github.com/google/quiver-dart

使用方式:

dependencies:
  quiver: '>=2.0.0 <3.0.0'

根据pubspec.yaml中设置的目录模板自动向其中添加文件记录的脚本 asset_generator

好多人都说Flutter中的资源引用很头疼,手写很麻烦,最近找到了一个脚本刚好卡呀解决这个问题。

这个脚本的作用:利用asset_generator脚本生成r.dart 资源文件,方便在代码中引用资源。

github地址: https://github.com/flutter-dev/asset_generator

使用方式:

1.下载 asset_generator.dart 脚本文件。
2.找到自己Flutter的安装目录,将脚本放在Flutter的根目录下。

:point_right: 另外关于pubspec.yaml文件,它很严格,很多人会写错,多一个或者少一个空格都会报错。刚好我找到了一个在线监测工具https://www.bejson.com/validators/yaml/ 把你的yaml文件复制进去 就可以自动帮你找出错误了。


常用开源包:

网络请求

库名版本号链接描述
http0.11.3+16https://pub.dartlang.org/packages/http该软件包包含一组高级函数和类,可以轻松使用HTTP资源。它与平台无关,可以在命令行和浏览器上使用。
dio0.0.14https://pub.dartlang.org/packages/dioDart的一个强大的Http客户端,支持拦截器、全局配置、FormData、请求取消、文件下载、超时等。
http_multi_server2.0.5https://pub.dartlang.org/packages/http_multi_serverdart:io HttpServer包装器,用于处理来自多个服务器的请求

类型编解码的库:

库名版本号链接描述
html_unescape1.0.0https://pub.dartlang.org/packages/html_unescape用于解决HTML编码字符串的Dart库。支持所有命名字符引用(如&nbsp;),小数字符引用(如&#225;)和十六进制字符引用(如&#xE3;)。
gbk2utf8https://github.com/jzoom/gbk2utf8官方的http还不能支持中文gbk的解析,这个项目就是为了解决gbk转成utf-8编码的。

序列化

  • 手动序列化:

使用 dart:convert 的内置解码器。包括传入 JSON 原始字符串给 JSON.decode() 方法,然后从 Map<String, dynamic> 中查询你需要的数据。

  • 自动序列化:
库名版本号链接描述
json_serializable0.5.7https://pub.dartlang.org/packages/json_serializable
built_value5.5.1https://pub.dartlang.org/packages/built_valueruntime依赖项
built_value_generator5.5.1https://pub.dartlang.org/packages/built_value_generatordev依赖项
built_value_test5.5.1https://pub.dartlang.org/packages/built_value_testtest依赖项

json解析

库名版本号链接描述
codable1.0.0-beta.2https://pub.dartlang.org/packages/codable用于将动态结构化数据(JSON,YAML)转换为Dart类型的库。

DSON是一个将Dart对象转换为JSON的库。(用于web)这个库是Dartson的一个分支,但又有不同。

方式大小 (js)序列化 (dart)反序列化 (dart)序列化 (js)反序列化 (js)
json_serializable80 KB9.09 ms6.61 ms8.23 ms8.12 ms
Serializable79 KB6.1 ms6.92 ms4.37 ms8.38 ms
DSON94 KB12.72 ms11.15 ms16.64 ms17.94 ms
Dartson86 KB9.61 ms6.81 ms8.58 ms7.01 ms
Manual86 KB8.29 ms5.78 ms10.7 ms7.9 ms
Interop70 KB61.55 ms14.96 ms2.49 ms2.93 ms
Jaguar_serializer88 KB8.57 ms6.58 ms10.31 ms8.59 ms
Jackson (Groovy)496 ms252 msn/an/a

编解码、加密解密有关的库

库名版本号链接描述
ninja1.0.0https://pub.dartlang.org/packages/ninja在Dart的Converter和Codec接口上完善的AES以及RSA加密解密算法的库。
archive2.0.0https://pub.dartlang.org/packages/archive为各种存档和压缩格式提供编码器和解码器,如zip,tar,bzip2,gzip和zlib。(不知道移动端能否用得到,文档说服务端和web端可以用。)

系统平台有关的库:

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

国际化和本地化:

库名版本号链接描述
intl0.15.6https://pub.dartlang.org/packages/intl这个包提供国际化和本地化功能,包括消息翻译、复数和性别、日期/数字格式和解析以及双向文本。

图片加载和缓存

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

库名版本号链接描述
cached_network_image0.4.1+1https://pub.dartlang.org/packages/cached_network_imageFlutter库来加载和缓存网络图像。也可以与占位符和错误小部件一起使用。

数据存储、缓存有关的库

库名版本号链接描述
sqflitesqflite0.10.0https://pub.dartlang.org/packages/sqfliteSQLite的Flutter插件,一个自包含的高可靠性嵌入式SQL数据库引擎。
file_cache0.0.1https://pub.dartlang.org/packages/file_cache为flutter package项目缓存Json,Buffer,FileCacheImage。

UI库:

库名版本号链接描述
font_awesome_flutter7.0.0https://pub.dartlang.org/packages/font_awesome_flutter图标字体的一个库
fluttertoast2.0.3https://pub.dartlang.org/packages/fluttertoast用于Android和ios的toast库。
image_picker0.4.5https://pub.dartlang.org/packages/image_picker用于从Android和iOS图像库中选择图像,并使用相机拍摄新照片。
camera0.2.1https://pub.dartlang.org/packages/camera用于在Android和iOS上获取有关和控制相机的信息。支持预览相机馈送和捕捉图像。

图标有关的开源库 ↓

库名版本号链接描述
cupertino_icons0.1.2https://pub.dartlang.org/packages/cupertino_iconsCupertino的图标组件库
flutter_launcher_icons0.6.0https://pub.dartlang.org/packages/flutter_launcher_icons 或者github地址https://github.com/fluttercommunity/flutter_launcher_icons一个命令行工具,简化了更新Flutter应用程序启动图标的任务。 完全灵活,您可以选择要更新启动图标的平台,如果需要,可以选择保留旧的启动图标,以防将来某个时候还原旧图标。

富文本 ↓

库名版本号链接描述
flutter_html_view0.5.2https://pub.dartlang.org/packages/flutter_html_viewFlutter没有默认的支持来显示html,所以需要三方的包来显示。这个包可以将html呈现给原生的Widget。(目前支持的标签比较少)
flutter_html_textview0.2.6https://pub.dartlang.org/packages/flutter_html_textview将html呈现为一个Widget,在textview中呈现html。

MarkDown ↓

库名版本号链接描述
flutter_markdown0.1.3https://github.com/flutter/flutter_markdown官方的MarkDown库,它支持原始MarkDown格式,但没有内联Html格式。
markdown2.0.0https://pub.dartlang.org/packages/markdown用Dart编写的便携式Markdown库。它可以在客户端和服务器上将Markdown解析为HTML。
html2md0.1.7https://pub.dartlang.org/packages/html2md将html转换为Dart中的MarkDown.

动画 ↓

库名版本号链接描述
flutter_villains1.0.1https://pub.dartlang.org/packages/flutter_villains页面切换动画的一个库,简化动画操作,你只需要管理好UI就可以了。

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

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

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

库名版本号链接描述
flutter_calendar0.0.4https://pub.dartlang.org/packages/flutter_calendar适用于Flutter的日历小组件。
calendarro0.0.1https://pub.dartlang.org/packages/calendarroFlutter的日历组件库。 这个库提供了多种自定义组件的方法。

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

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

图片选择的库 ↓

库名版本号链接描述
image_picker0.4.5https://pub.dartlang.org/packages/image_picker适用于iOS和Android的Flutter插件,用于从图像库中拾取图像,并使用相机拍摄新照片。(功能正在完善中)
flutter_multiple_image_picker0.0.1https://pub.dartlang.org/packages/flutter_multiple_image_picker一个新的Flutter插件,用于从图库中选择多个图像。

联系人选择的库 ↓

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

颜色选择的库 ↓

库名版本号链接描述
flutter_color_picker0.0.1https://pub.dartlang.org/packages/flutter_color_picker一个简单的颜色选择器,类似于安卓的selector的功能,可以在点击控件时,给控件设置选择器效果。
material_color_picker0.0.1https://pub.dartlang.org/packages/material_color_picker(这个是旧版本)这个是Flutter的颜色选择器,基于Google Docs颜色选择器。这个用于选择颜色,你想用哪一个颜色,可以弹窗自由选择。
material_pickers0.0.2https://pub.dartlang.org/packages/material_pickers(这个是新版本)这个是Flutter的颜色选择器,基于Google Docs颜色选择器。这个用于选择颜色,你想用哪一个颜色,可以弹窗自由选择。
flutter_colorpicker0.0.5https://pub.dartlang.org/packages/flutter_colorpicker这是一个HSV的颜色选择器

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

库名版本号链接描述
flutter_swiper1.0.4https://pub.dartlang.org/packages/flutter_swiper 对应的github地址https://github.com/best-flutter/flutter_swiperFlutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配.
infinity_page_view1.0.0https://pub.dartlang.org/packages/infinity_page_viewFlutter无限页面视图。
carousel0.1.0https://pub.dartlang.org/packages/carousel一个简单的轮播组件(待完善)。
page_transformer0.0.1https://pub.dartlang.org/packages/page_transformer用于在Flutter中创建漂亮的PageView视差效果的示例项目。

导航栏有关的库(库) ↓

库名版本号链接描述
navigation_bar0.0.1https://pub.dartlang.org/packages/navigation_bar一个简易的底部导航栏。

列表有关的库 ↓

库名版本号链接描述
flutter_pagewise0.2.0https://pub.dartlang.org/packages/flutter_pagewise一次加载一页(或批处理)内容(也称为延迟加载)
lazy_load_scrollview0.0.2https://pub.dartlang.org/packages/lazy_load_scrollviewScrollView的包装器,可以启用延迟加载,当到达页面底部时将触发回调。

路由:

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

消息传递通信有关:

库名版本号链接描述
flutter_local_notifications0.3.0https://pub.dartlang.org/packages/flutter_local_notifications一个跨平台的显示本地notifications的插件。
local_notifications0.0.6https://pub.dartlang.org/packages/local_notifications这个库能让你在Android和iOS上创建Notifications很简单。
url_launcher3.0.2https://pub.dartlang.org/packages/url_launcher用于在Android和iOS上启动URL。支持网络,电话,短信和电子邮件方案。
firebase_messaging1.0.2https://pub.dartlang.org/packages/firebase_messaging一款跨平台的消息传递解决方案,可让您在Android和iOS上可靠地传递消息。
event_bus0.4.1https://pub.dartlang.org/packages/event_bus一个使用Dart流进行解耦应用程序的简单事件总线的库。

视频 & 音频:

库名版本号链接描述
video_player0.6.5https://pub.dartlang.org/packages/video_playerFlutter官方的视频库(也可以用于直播),用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。支持主流直播流。该库底层使用的ExoPlayer播放器。更多关于ExoPlayer播放器支持的视频格式资料请看官方文档ExoPlayer播放器支持的视频格式
video_launcher0.3.0https://pub.dartlang.org/packages/video_launcher视频播放器
flute_music_player0.0.6https://pub.dartlang.org/packages/flute_music_player基于Flutter的材料设计音乐播放器与音频插件播放本地音乐文件.
audioplayer0.5.0https://pub.dartlang.org/packages/audioplayer一个播放远程或本地音频文件Flutter音频插件
audioplayers0.5.2https://pub.dartlang.org/packages/audioplayers这是rxlabz的audioplayer的一个分支,不同之处在于它支持同时播放多个音频并显示音量控制。

rx系列:

库名版本号链接描述
rxdart0.17.0https://pub.dartlang.org/packages/rxdartRxDart是一种基于ReactiveX的谷歌Dart反应性函数编程库。谷歌Dart自带了一个非常不错的流API;RxDart没有尝试提供这个API的替代方案,而是在它上面添加了一些功能。
rx_widgets1.0.3https://pub.dartlang.org/packages/rx_widgetsrx_widgets是一个包含基于流的Flutter Widgets和Widget帮助程序/便利类的程序包,它们有助于反应式编程风格,特别是与RxDart和RxCommands结合使用。
rx_command2.0.0https://pub.dartlang.org/packages/rx_commandRxCommand是针对事件处理程序的基于Reactive Extensions(Rx)的抽象。它基于ReactiveUI框架的ReactiveCommand。它大量使用了RxDart包。

三方sdk有关的:

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

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

库名版本号链接描述
map_view0.0.12https://pub.dartlang.org/packages/map_view一个用于在iOS和Android上显示谷歌地图的Flutter插件
flutter_map0.0.10https://pub.dartlang.org/packages/flutter_map基于leaflet的Flutter地图包
location1.3.4https://pub.dartlang.org/packages/location这个插件 处理Android和iOS上的位置。它还提供位置更改时的回调。
latlong0.5.3https://pub.dartlang.org/packages/latlongLatLong是一个计算通用的纬度和经度的轻量级库。

二维码

库名版本号链接描述
qr_flutter1.1.3https://pub.dartlang.org/packages/qr_flutterQR.Flutter是一个Flutter库,可通过Widget或自定义Paint进行简单快速的QR码渲染。
barcode_scan0.0.4https://pub.dartlang.org/packages/barcode_scan用于扫描2D条形码和QRCodes的Flutter插件。
qrcode_reader0.3.3https://pub.dartlang.org/packages/qrcode_reader使用相机读取二维码的Flutter插件。

WebView

库名版本号链接描述
flutter_webview_plugin0.1.6https://pub.dartlang.org/packages/flutter_webview_plugin允许Flutter与原生Webview进行通信的插件。

图表库

库名版本号链接描述
charts-common0.3.0https://pub.dartlang.org/packages/charts_flutterMaterial Design风格的图表库
charts-flutter0.3.0https://pub.dartlang.org/packages/charts_common通用的图表库组件
flutter_circular_chart0.0.3https://pub.dartlang.org/packages/flutter_circular_chart一个让你使用flutter轻松创建的动画圆形图控件的库。

权限库

库名版本号链接描述
simple_permissions0.1.5https://pub.dartlang.org/packages/simple_permissions用于android和ios的请求权限的库
flutter_simple_permissions0.0.1https://pub.dartlang.org/packages/flutter_simple_permissions权限申请的库

分享

库名版本号链接描述
share0.5.1https://pub.dartlang.org/packages/share支持分享的flutter插件

统计

库名版本号链接描述
flutter_umeng_analytics0.0.1https://pub.dartlang.org/packages/flutter_umeng_analytics这个库集成了友盟统计sdk

登陆

库名版本号链接描述
flutter_qq0.0.1https://pub.dartlang.org/packages/flutter_qq这个库集成了QQ登录、QQ分享、QQ空间分享。
flutter_wechat0.1.2https://pub.dartlang.org/packages/flutter_wechat这个库集成了微信,支持微信登录、分享、支付。

支付

库名版本号链接描述
flutter_alipay0.1.0https://pub.dartlang.org/packages/flutter_alipay这个库继承了支付宝,兼容android和ios

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

https://github.com/hyz1992/my_aliplayer 集成了阿里云播放器,可以用来播放视频,也可以播放rtmp格式。


以下几个暂未找到相关的三方库

  • 推送

一个好玩的库:

库名版本号链接描述
pwa0.1.10https://pub.dartlang.org/packages/pwa基于Dart的PWA应用程序的库
Tags: None