作为目前最流行的跨平台技术框架,Flutter受到被越来越多的开发者和组织追捧,截止2019年11月,Flutter已获得超过80K的关注和10k的fork量。所以,把Flutter说成是2019年最火热的前端技术也不过分。
和其他前端技术一样,Flutter技术之所以火热是因为完善的社区和开发者的热情,所以在开发Flutter应用时我们或多或少的会使用一些开源的社区库,来减少我们自己封装带来的时间成本,下面就Flutter开发中使用得比较多的库给大家做一个总结(排名不分先后)。
和前端的包管理机制类似,Flutter的依赖包放在pubspec.yaml文件中,如下所示。
name: flutter_app
description: A new Flutter application.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
lpinyin: ^1.0.7
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
其中,我们依赖的第三方库就放在dependencies节点下面。
UI展示
富文本
flutter_html_view
https://pub.dartlang.org/packages/flutter_html_view 默认情况下,Flutter是没有提供显示Html的组件的,所以如果要显示Html,需要使用三方的包,这个包可以将html呈现给原生的Widget。类似于Android的jsoup插件。
flutter_html_textview
https://pub.dartlang.org/packages/flutter_html_textview 将html呈现为一个Widget,在textview中呈现html。
MarkDown
flutter_markdown
https://pub.dartlang.org/packages/markdown
使用Dart编写的支持Markdown查看的库,它可以在客户端和服务器上将Markdown解析为HTML。
markdown
https://pub.dartlang.org/packages/markdown 用Dart编写的便携式Markdown库。它可以在客户端和服务器上将Markdown解析为HTML。
html2md
https://pub.dartlang.org/packages/html2md 一个支持将html转换为MarkDown的插件。
动画
flutter_villains
https://pub.dartlang.org/packages/flutter_villains
一个页面切换动画的库,可以简化动画操作,使用时只需要管理好UI即可。
屏幕适配
platform_aware
https://pub.dartlang.org/packages/platform_aware 为自动适应当前平台而包装的Flutter组件,不需要对iOS和Android进行代码更改。所有小部件都依赖于Theme.of(context).platform来确定当前活动平台的平台。你可以使用Flutter Inspector动态地更改平台。
native_widgets
https://pub.dartlang.org/packages/native_widgets 为避免重复代码,只编写一次代码就可以支持两个平台并自动根据平台自动使用对应风格组件,Android将使用材料设计,iOS将使用Cupertino风格的小部件。
日历、时间选择库
flutter_calendar
https://pub.dartlang.org/packages/flutter_calendar Flutter的日历组件库,由于调用的是原生的组件库,所以在显示上略有差异。
calendarro
[https://pub.dartlang.org/packages/calendarro](https://pub.dartlang.org/packages/calendarro)
Flutter的日历组件库, 这个库提供了多种自定义组件的方法。
flutter_picker
https://pub.dartlang.org/packages/flutter_picker 一个日期,时间,日期时间,icon,自定义数据的选择器,可以居中弹窗,也可以在底部弹出。(目前来看是最全面的一个选择器控件。该插件支持ios和android平台,使用的是ios的风格的UI效果。)
颜色选择
flutter_color_picker
https://pub.dartlang.org/packages/flutter_color_picker 一个简单的颜色选择器,类似于安卓的selector的功能,可以在点击控件时,给控件设置选择器效果。
flutter_colorpicker
https://pub.dartlang.org/packages/flutter_colorpicker 一个HSV的颜色选择器。
导航栏
navigation_bar
https://pub.dartlang.org/packages/navigation_bar 简易的底部导航栏库
fluro
https://pub.dartlang.org/packages/fluro 最好用的路由导航框架。功能:简单的路线导航;函数处理程序(映射到函数而不是路径);通配符参数匹配;查询字符串参数解析;内置常用转换;简单的定制转换创建。
网络与数据序列化
网络请求
http
https://pub.dartlang.org/packages/http https://github.com/dart-lang/http http是使用Dart原生编写的网络请求库,可以轻松的实现HTTP资源请求,并且它与平台无关,可以在命令行和浏览器上使用。
HttpClient
HttpClient是Dart IO库提供的一种Http请求,可以实现一些基本的Http请求。不过,HttpClient只能实现一些基本的网络请求,对应一些复杂的网络请求还无法完成,如POST里的Body请求体传输内容类型部分还无法支持,multipart/form-data这个类型传输还不支持。
dio
https://pub.dartlang.org/packages/dio
Dart社区提供的http请求库,不仅支持常见的网络请求,还支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等操作。
http_multi_server
https://pub.dartlang.org/packages/http_multi_server
HttpServer包装器,可以用于处理来自多个服务器请求。
ps: 关于网络库的详细使用,可以参考我之前文章的介绍:Flutter开发之Http网络请求
序列化
Flutter序列化可以分为手动序列化和使用工具序列化。手动序列化指的是使用 dart:convert 的内置解码器,包括传入 JSON 原始字符串给 JSON.decode() 方法,然后从 Map 中查询你需要的数据。自动序列化可以使用诸如json_serializable、built_value、built_value_generator和built_value_test库。
除此之外,如果涉及到json解析,还可以使用codable库,它可以将动态结构化数据(JSON,YAML)转换为Dart类型的库。以下是一些常用的json解析库的比较。
编码解码
有时候为了数据的安全方面的考虑,会对传输的数据或本地保存的数据进行编解码、加密解密操作,如果有这方面的操作,可以使用下面的库。
ninja
https://pub.dartlang.org/packages/ninja 在Dart的Converter和Codec接口上完善的AES以及RSA加密解密算法的库。
archive
https://pub.dartlang.org/packages/archive 为各种存档和压缩格式提供编码器和解码器,如zip,tar,bzip2,gzip和zlib。
数据库
如果有涉及到数据存储、缓存相关的需求,可以使用如下的第三方库。
sqflite
https://pub.dartlang.org/packages/sqflite SQLite的Flutter插件,一个自包含的高可靠性嵌入式SQL数据库引擎。
file_cache
https://pub.dartlang.org/packages/file_cache 为flutter package项目缓存Json、Buffer、FileCacheImage。
图像加载与加工
图像加载
在Flutter开发中,图像是一个重要的模块,主要是图片的加载和图片的处理。关于加载图片,除了使用Image组件的Image.network 、 FadeInImage.memoryNetwork 来加载图片外,还可以使用如下的一些图片库来加载图片。
cached_network_image
https://pub.dartlang.org/packages/cached_network_image 一个用于显示来自Internet的图像并将它们保存在缓存目录中的flutter库,可以用来加载和缓存网络图像,也可以与占位符和错误小部件一起使用。
flutter_advanced_networkimage
https://pub.dartlang.org/packages/flutter_advanced_networkimage 一个高级的图像缓存加载和缩放控制的flutter库。
transparent_image
https://pub.dartlang.org/packages/transparent_image 简单的透明图像,表示为Uint8List,在加载图片时可以用来做为占位符。
图像处理
image_jpeg
https://pub.dartlang.org/packages/image_jpeg 用于将图像转jpeg缩放压缩,压缩后再上传图片效率更高。该库最终会调用Android或iOS原生功能进行图片压缩处理,性能较高,支持的源图像格式也很多。
image_picker
https://pub.dev/packages/image_picker
根据库名就可以知道,image_picker是一个用于从Android和iOS图像库中选择图像的库,支持使用相机拍摄新照片。
photo
https://pub.dartlang.org/packages/image 此库同样可以用于选择图像,支持多选,而且此库是用Flutter做的UI,可以很方便的自定义修改显示样式。
image
https://pub.dartlang.org/packages/image
Dart库,提供以各种不同的文件格式加载、保存和操作图像的能力。该库不需要依赖于DART:IO,因此它可以用于服务器和Web应用程序。
flutter_svg
https://pub.dartlang.org/packages/flutter_svg 可以使用此库来加载svg图像。
zoomable_image
https://pub.dartlang.org/packages/zoomable_image 一个支持图像查看和手势缩放操作功能的图片库。
image_carousel
https://pub.dartlang.org/packages/image_carousel 一个用于Flutter图像展示的控件,与官方提供的Image组件相比,image_carousel支持左右划动来切换上一张下一张图像,并且image_carousel还结合了zoomable_image的功能,因此可以点击后缩放查看图片,除此之外,image_carousel还支持Asset和网络图像。
carousel_slider
https://pub.dartlang.org/packages/carousel_slider 从名字就可以知道,carousel_slider是一个支持手势划动的库,使用此库可以通过手势划动来切换图像组件,并且此库还支持自动播放图像。
parallax_image
https://pub.dartlang.org/packages/parallax_image 视差图像可以与任何可滚动(例如ListVIEW)一起使用,让放在滚动区域内的图像滚动时看起来更平滑。
camera
https://pub.dartlang.org/packages/camera 用于获取Android和iOS系统相机的信息,支持预览相机馈送和捕捉图像,同时支持录制视频。
消息通知
flutter_local_notifications
https://pub.dartlang.org/packages/flutter_local_notifications 一个可以跨平台显示本地notifications的插件,支持android和iOS平台。
local_notifications
https://pub.dartlang.org/packages/local_notifications 使用此库可以在Android和iOS上很容易的创建Notifications通知。
url_launcher
https://pub.dartlang.org/packages/url_launcher 可以在Android和iOS上启动URL,支持打开网络、电话、短信和电子邮件等方案。
firebase_messaging
https://pub.dartlang.org/packages/firebase_messaging 一款跨平台的消息传递解决方案,可让您在Android和iOS上可靠地传递消息。
event_bus
https://pub.dartlang.org/packages/event_bus 使用Dart流进行解耦应用程序的简单事件总线的库,和Android中的事件总线机制类似,内部使用了广播机制。
视频与音频
在Flutter开发中,可能会涉及到视频和音频的播放开发, 除了使用Flutter提供的组件外,还可以使用一些开源的第三方库。
video_player
https://pub.dartlang.org/packages/video_player 官方维护的视频播放插件,用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。
video_launcher
https://pub.dartlang.org/packages/video_launcher 主要用于视频播放器。
flute_music_player
https://pub.dartlang.org/packages/flute_music_player 基于Flutter的音乐播放器与音频插件播放,支持本地音乐文件播放。
audioplayer
https://pub.dartlang.org/packages/audioplayer 一个播放远程或本地音频文件Flutter音频插件。
audioplayers
https://pub.dartlang.org/packages/audioplayers audioplayer的一个分支,不同之处在于它支持同时播放多个音频并显示音量控制。
其他
除此之外,如地图、二维码、图表库、权限库和分享等,也是平时开发中遇到比较多的需要。
地图
map_view
https://pub.dartlang.org/packages/map_view 一个用于在iOS和Android上显示谷歌地图的Flutter插件。
flutter_map
https://pub.dartlang.org/packages/flutter_map 基于leaflet的Flutter地图包。
location
https://pub.dartlang.org/packages/location 处理Android和iOS上的位置,提供位置更改时的回调。
latlong
https://pub.dartlang.org/packages/latlong LatLong是一个计算通用的纬度和经度的轻量级库。
二维码
qr_flutter
https://pub.dartlang.org/packages/qr_flutter qr_flutter是一个用于二维码的Flutter库,可通过Widget或自定义Paint进行简单快速的QR码渲染。
barcode_scan
https://pub.dartlang.org/packages/barcode_scan barcode_scan是一个用于扫描2D条形码和QRCodes的Flutter插件。
qrcode_reader
https://pub.dartlang.org/packages/qrcode_reader qrcode_reader是一个使用相机读取二维码的Flutter插件。
图表库
很多时候,图表开发也是一个比较常见的开发需求,如果有图表方面的开发需求,可以使用如下的开源库。
charts-common
https://pub.dartlang.org/packages/charts_flutter Material Design风格的图表库。
charts-flutter
https://pub.dartlang.org/packages/charts_common 通用的图表库组件,提供基本的柱状图,折线图,饼图等。
flutter_circular_chart
https://pub.dartlang.org/packages/flutter_circular_chart 一个让你使用flutter轻松创建的动画圆形图控件的库。
权限
在开发中,如果要向系统申请某个权限,可以使用权限库去申请。
simple_permissions
https://pub.dartlang.org/packages/simple_permissions 一个用于android和ios的请求权限的库。
flutter_simple_permissions
https://pub.dartlang.org/packages/flutter_simple_permissions Flutter权限申请的库。
分享统计支付
share
https://pub.dartlang.org/packages/share 支持分享的flutter插件。
flutter_umeng_analytics
https://pub.dartlang.org/packages/flutter_umeng_analytics 友盟的分享和统计库。
flutter_qq
https://pub.dartlang.org/packages/flutter_qq 集成了QQ登录、QQ分享、QQ空间分享等功能的库。
flutter_wechat
https://pub.dartlang.org/packages/flutter_wechat 集成了微信,支持微信登录、分享、支付等功能的库。
flutter_alipay
https://pub.dartlang.org/packages/flutter_alipay 实现了调用支付宝进行支付的功能,兼容android和iOS。
开源应用源码
学习一门技术,最有效的入门就是学习完基础知识后,写一个小的应用。作为今年最热门的跨平台技术(没有之一),网络上出现了一大批开源的应用源码,通过阅读这些源码,我们可以快速的深入Flutter应用开发。
flutter-go
https://github.com/alibaba/flutter-go
由阿里巴巴前端技术团队开发的Flutter 开发者帮助 APP,包含 flutter 常用 140+ 组件的demo 演示与中文文档,是学习Flutter开发的必备手册。
gsy_github_app_flutter
https://github.com/CarGuo/GSYGithubAPP GSYGithubApp系列的优势:我们目前已经拥有Flutter、Weex、ReactNative、kotlin 四个版本。 功能齐全,项目框架内技术涉及面广,完成度高,持续维护,配套文章,适合全面学习,对比参考。跨平台的开源Github客户端App,更好的体验,更丰富的功能,旨在更好的日常管理和维护个人Github,提供更好更方便的驾车体验Σ( ̄。 ̄ノ)ノ。
flutter-examples
https://github.com/nisrulz/flutter-examples
包含Flutter的常见的学习示例。
flutter-osc
https://github.com/yubo725/flutter-osc
基于Google Flutter的开源中国客户端,支持Android和iOS。
FlutterDouBan
https://github.com/kaina404/FlutterDouBan
Flutter豆瓣客户端,Awesome Flutter Project,全网最100%还原豆瓣客户端。主要功能包括首页、书影音、小组、市集及个人中心,一个不拉。
zhihu-flutter
https://github.com/xujiyou/zhihu-flutter
一个高仿知乎的Flutter应用,支持黑色主题切换。
flutter_shuqi
https://github.com/huanxsd/flutter_shuqi
高仿书旗小说客户端,所有功能都是用Dart写的,iOS和Android的代码复用率达到了100%。
flutter-netease-music
https://github.com/boyan01/flutter-netease-music 高仿网易云音乐,完成大部分功能的高仿。
NeteaseCloudMusic
https://github.com/fluttercandies/NeteaseCloudMusic
高仿最新版的网易云音乐,接口使用Binaryify大佬的 – NeteaseCloudMusicApi
Morec
https://github.com/Mayandev/morec
这是一个非常精美的 Flutter 版电影客户端,利用豆瓣现有的 Api,打造了一个完整的电影展示 App。细节十分完善,是一个经过完整设计的产品而非 Demo。
flutter_boss
https://github.com/heruijun/flutter_boss 一个仿Boss直聘的Flutter应用。
awesome-flutter-cn
https://github.com/crazycodeboy/awesome-flutter-cn
Flutter是Google出品的一款用于开发高性能、高保真、跨平台App(Android iOS)的SDK。awesome-flutter-cn是Flutter的学习资料库,初学者可以参考它进行学习。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=6827,转载请注明出处。
评论0