从新手到Flutter架构师,一篇就够!Flutter-最全开源项目(UI、导航、网络、导航、音视频---)(1)

本文介绍了Flutter开发中常用的第三方库,包括UI展示、富文本处理、动画、屏幕适配、日历、时间选择、颜色选择、导航、网络与数据序列化、数据库、图像加载与加工、消息通知、视频音频、地图、图表等领域的库和工具。
摘要由CSDN通过智能技术生成

dev_dependencies:
flutter_test:
sdk: flutter

flutter:
uses-material-design: true

其中,我们依赖的第三方库就放在dependencies节点下面。

UI展示

富文本

flutter_html_view

pub.dartlang.org/packages/fl… 默认情况下,Flutter是没有提供显示Html的组件的,所以如果要显示Html,需要使用三方的包,这个包可以将html呈现给原生的Widget。类似于Android的jsoup插件。

flutter_html_textview

pub.dartlang.org/packages/fl… 将html呈现为一个Widget,在textview中呈现html。

MarkDown

flutter_markdown

pub.dartlang.org/packages/ma…

使用Dart编写的支持Markdown查看的库,它可以在客户端和服务器上将Markdown解析为HTML。

markdown

pub.dartlang.org/packages/ma… 用Dart编写的便携式Markdown库。它可以在客户端和服务器上将Markdown解析为HTML。

html2md

pub.dartlang.org/packages/ht… 一个支持将html转换为MarkDown的插件。

动画

flutter_villains

pub.dartlang.org/packages/fl… 一个页面切换动画的库,可以简化动画操作,使用时只需要管理好UI即可。

屏幕适配

platform_aware

pub.dartlang.org/packages/pl… 为自动适应当前平台而包装的Flutter组件,不需要对iOS和Android进行代码更改。所有小部件都依赖于Theme.of(context).platform来确定当前活动平台的平台。你可以使用Flutter Inspector动态地更改平台。

native_widgets

pub.dartlang.org/packages/na… 为避免重复代码,只编写一次代码就可以支持两个平台并自动根据平台自动使用对应风格组件,Android将使用材料设计,iOS将使用Cupertino风格的小部件。

日历、时间选择库

flutter_calendar

pub.dartlang.org/packages/fl… Flutter的日历组件库,由于调用的是原生的组件库,所以在显示上略有差异。

calendarro

https://pub.dartlang.org/packages/calendarro

Flutter的日历组件库, 这个库提供了多种自定义组件的方法。

flutter_picker

pub.dartlang.org/packages/fl… 一个日期,时间,日期时间,icon,自定义数据的选择器,可以居中弹窗,也可以在底部弹出。(目前来看是最全面的一个选择器控件。该插件支持ios和android平台,使用的是ios的风格的UI效果。)

颜色选择

flutter_color_picker

pub.dartlang.org/packages/fl… 一个简单的颜色选择器,类似于安卓的selector的功能,可以在点击控件时,给控件设置选择器效果。

flutter_colorpicker

pub.dartlang.org/packages/fl… 一个HSV的颜色选择器。

导航栏

navigation_bar

pub.dartlang.org/packages/na… 简易的底部导航栏库

fluro

pub.dartlang.org/packages/fl… 最好用的路由导航框架。功能:简单的路线导航;函数处理程序(映射到函数而不是路径);通配符参数匹配;查询字符串参数解析;内置常用转换;简单的定制转换创建。

网络与数据序列化

网络请求

http

pub.dartlang.org/packages/ht… github.com/dart-lang/h… http是使用Dart原生编写的网络请求库,可以轻松的实现HTTP资源请求,并且它与平台无关,可以在命令行和浏览器上使用。

HttpClient

HttpClient是Dart IO库提供的一种Http请求,可以实现一些基本的Http请求。不过,HttpClient只能实现一些基本的网络请求,对应一些复杂的网络请求还无法完成,如POST里的Body请求体传输内容类型部分还无法支持,multipart/form-data这个类型传输还不支持。

dio

pub.dartlang.org/packages/di…

Dart社区提供的http请求库,不仅支持常见的网络请求,还支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等操作。

http_multi_server

pub.dartlang.org/packages/ht…

HttpServer包装器,可以用于处理来自多个服务器请求。

ps: 关于网络库的详细使用,可以参考我之前文章的介绍:Flutter开发之Http网络请求

序列化

Flutter序列化可以分为手动序列化和使用工具序列化。手动序列化指的是使用 dart:convert 的内置解码器,包括传入 JSON 原始字符串给 JSON.decode() 方法,然后从 Map<String, dynamic> 中查询你需要的数据。自动序列化可以使用诸如json_serializable、built_value、built_value_generator和built_value_test库。

除此之外,如果涉及到json解析,还可以使用codable库,它可以将动态结构化数据(JSON,YAML)转换为Dart类型的库。以下是一些常用的json解析库的比较。

编码解码

有时候为了数据的安全方面的考虑,会对传输的数据或本地保存的数据进行编解码、加密解密操作,如果有这方面的操作,可以使用下面的库。

ninja

pub.dartlang.org/packages/ni… 在Dart的Converter和Codec接口上完善的AES以及RSA加密解密算法的库。

archive

pub.dartlang.org/packages/ar… 为各种存档和压缩格式提供编码器和解码器,如zip,tar,bzip2,gzip和zlib。

数据库

如果有涉及到数据存储、缓存相关的需求,可以使用如下的第三方库。

sqflite

pub.dartlang.org/packages/sq… SQLite的Flutter插件,一个自包含的高可靠性嵌入式SQL数据库引擎。

file_cache

pub.dartlang.org/packages/fi… 为flutter package项目缓存Json、Buffer、FileCacheImage。

图像加载与加工

图像加载

在Flutter开发中,图像是一个重要的模块,主要是图片的加载和图片的处理。关于加载图片,除了使用Image组件的Image.network 、 FadeInImage.memoryNetwork 来加载图片外,还可以使用如下的一些图片库来加载图片。

cached_network_image

pub.dartlang.org/packages/ca… 一个用于显示来自Internet的图像并将它们保存在缓存目录中的flutter库,可以用来加载和缓存网络图像,也可以与占位符和错误小部件一起使用。

flutter_advanced_networkimage

pub.dartlang.org/packages/fl… 一个高级的图像缓存加载和缩放控制的flutter库。

transparent_image

pub.dartlang.org/packages/tr… 简单的透明图像,表示为Uint8List,在加载图片时可以用来做为占位符。

图像处理

image_jpeg

pub.dartlang.org/packages/im… 用于将图像转jpeg缩放压缩,压缩后再上传图片效率更高。该库最终会调用Android或iOS原生功能进行图片压缩处理,性能较高,支持的源图像格式也很多。

image_picker

pub.dev/packages/im…

根据库名就可以知道,image_picker是一个用于从Android和iOS图像库中选择图像的库,支持使用相机拍摄新照片。

photo

pub.dartlang.org/packages/im… 此库同样可以用于选择图像,支持多选,而且此库是用Flutter做的UI,可以很方便的自定义修改显示样式。

image

pub.dartlang.org/packages/im…

Dart库,提供以各种不同的文件格式加载、保存和操作图像的能力。该库不需要依赖于DART:IO,因此它可以用于服务器和Web应用程序。

flutter_svg

pub.dartlang.org/packages/fl… 可以使用此库来加载svg图像。

zoomable_image

pub.dartlang.org/packages/zo… 一个支持图像查看和手势缩放操作功能的图片库。

image_carousel

pub.dartlang.org/packages/im… 一个用于Flutter图像展示的控件,与官方提供的Image组件相比,image_carousel支持左右划动来切换上一张下一张图像,并且image_carousel还结合了zoomable_image的功能,因此可以点击后缩放查看图片,除此之外,image_carousel还支持Asset和网络图像。

carousel_slider

pub.dartlang.org/packages/ca… 从名字就可以知道,carousel_slider是一个支持手势划动的库,使用此库可以通过手势划动来切换图像组件,并且此库还支持自动播放图像。

parallax_image

pub.dartlang.org/packages/pa… 视差图像可以与任何可滚动(例如ListVIEW)一起使用,让放在滚动区域内的图像滚动时看起来更平滑。

camera

pub.dartlang.org/packages/ca… 用于获取Android和iOS系统相机的信息,支持预览相机馈送和捕捉图像,同时支持录制视频。

消息通知

flutter_local_notifications

pub.dartlang.org/packages/fl… 一个可以跨平台显示本地notifications的插件,支持android和iOS平台。

local_notifications

pub.dartlang.org/packages/lo… 使用此库可以在Android和iOS上很容易的创建Notifications通知。

url_launcher

pub.dartlang.org/packages/ur… 可以在Android和iOS上启动URL,支持打开网络、电话、短信和电子邮件等方案。

firebase_messaging

pub.dartlang.org/packages/fi… 一款跨平台的消息传递解决方案,可让您在Android和iOS上可靠地传递消息。

event_bus

pub.dartlang.org/packages/ev… 使用Dart流进行解耦应用程序的简单事件总线的库,和Android中的事件总线机制类似,内部使用了广播机制。

视频与音频

在Flutter开发中,可能会涉及到视频和音频的播放开发, 除了使用Flutter提供的组件外,还可以使用一些开源的第三方库。

video_player

pub.dartlang.org/packages/vi… 官方维护的视频播放插件,用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。

video_launcher

pub.dartlang.org/packages/vi… 主要用于视频播放器。

flute_music_player

pub.dartlang.org/packages/fl… 基于Flutter的音乐播放器与音频插件播放,支持本地音乐文件播放。

audioplayer

pub.dartlang.org/packages/au… 一个播放远程或本地音频文件Flutter音频插件。

audioplayers

pub.dartlang.org/packages/au… audioplayer的一个分支,不同之处在于它支持同时播放多个音频并显示音量控制。

其他

除此之外,如地图、二维码、图表库、权限库和分享等,也是平时开发中遇到比较多的需要。

地图

map_view

pub.dartlang.org/packages/ma… 一个用于在iOS和Android上显示谷歌地图的Flutter插件。

flutter_map

pub.dartlang.org/packages/fl… 基于leaflet的Flutter地图包。

location

pub.dartlang.org/packages/lo… 处理Android和iOS上的位置,提供位置更改时的回调。

latlong

pub.dartlang.org/packages/la… LatLong是一个计算通用的纬度和经度的轻量级库。

二维码

qr_flutter

pub.dartlang.org/packages/qr… qr_flutter是一个用于二维码的Flutter库,可通过Widget或自定义Paint进行简单快速的QR码渲染。

barcode_scan

pub.dartlang.org/packages/ba… barcode_scan是一个用于扫描2D条形码和QRCodes的Flutter插件。

qrcode_reader

pub.dartlang.org/packages/qr… qrcode_reader是一个使用相机读取二维码的Flutter插件。

图表库

很多时候,图表开发也是一个比较常见的开发需求,如果有图表方面的开发需求,可以使用如下的开源库。

charts-common

pub.dartlang.org/packages/ch… Material Design风格的图表库。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-PB9GAFsI-1712368709193)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值