Flutter,也许你会常用到的库

391 阅读8分钟

以下是我在日常开发中,整理出的使用频率可能会比较大的一些库,做了些许的整合,对我而言是个记录,可能也许大概 也会对看官你有一丢丢的帮助,不过本文不涉及库的使用,若有什么问题或者错误可以留言,我们再一起讨论(别问,问了我就是菜狗)。

当然,如果看官你有更好使用或者简便的库,无论是实现哪方面的功能,都可推荐给我。

:我列举的库,只是我个人使用的较多或者个人觉得对我更加适合的解决方案,并不一定最优,举个栗子:也许你搜索状态管理工具,会发现许多人推荐 Provider,甚至于官网方案中它都居于首位(也许排名不分先后??)而我则更加倾向于了 Getx,但是这不是意味着 Provider 不优秀或者不好用(我先手动狗头)。

文章列举的库的地址,我统一使用了 pub-web.flutter-io.cn ,但是对于 pub.dev 而言二者并没有什么大区别。

强,无敌

GetX

pub-web.flutter-io.cn/packages/ge…

Getx,没有给他归类是因为他的功能非常之多,他是一个超轻且强大的 Flutter 解决方案,诸如:状态管理,路由管理,依赖注入,国际化等 都可以使用 Getx 方便且便捷的实现。

image.png

一张图片,尽显它的强大。

网络请求

Http

pub-web.flutter-io.cn/packages/ht…

用于发出 HTTP 请求的官方库,支持多平台,无论是简易请求或者复杂功能,都可以使用它。

Dio

pub-web.flutter-io.cn/packages/di…

一个强大的 Flutter HTTP网络包,支持全局配置,拦截器,FormData,请求取消,文件上传/下载,超时,自定义适配器等,因此,请求复杂或者包装请求的前提下,我个人更加推荐。

日志打印

logging

pub-web.flutter-io.cn/packages/lo…

简单的日志配置,基本等同于 print ,但是他还支持为日志消息添加处理程序。

logger

pub-web.flutter-io.cn/packages/lo…

这是一款小巧,易于使用和可扩展的的日志打印,类似于安卓日志打印(带有不同的颜色)。

Loading 解决方案

loader_overlay

pub-web.flutter-io.cn/packages/lo…

你有没有发现自己在做一些异步处理,并希望防止用户与屏幕交互,而应用程序正在加载的情况下?如果是这样,这个包就是为你量身定做的。

flutter_easyloading

pub-web.flutter-io.cn/packages/fl…

toast loading 的解决方案(比较好用,可惜很久不更新了)。

flutter_spinkit (loading 样式集合)

pub-web.flutter-io.cn/packages/fl…

提供 loading 动画的集合。

loading_animation_widget(loading 样式集合)

pub-web.flutter-io.cn/packages/lo…

提供 loading 动画的集合。

动画

lottie(动画库)

pub-web.flutter-io.cn/packages/lo…

Lottie 是一个适用于 Android 和 iOS 的动画库,让你的御用 UI 为你制作动画吧。

animate_do(动画包)

pub-web.flutter-io.cn/packages/an…

animate.css 启发的动画包,仅使用 Flutter 动画构建,具有零依赖性,前端童鞋熟悉的不得了。

animated_text_kit(文本动画)

pub-web.flutter-io.cn/packages/an…

很酷且很棒的文本动画的集合,想让自己的文本动起来,用它就对了。

animations

pub-web.flutter-io.cn/packages/an…

此包包含预制动画,可实现常见的效果。这些动画可以根据您的内容进行自定义,并嵌入到您的应用程序中。

文件处理或图片上传

image_picker (图片选择上传)

pub-web.flutter-io.cn/packages/im…

适用于 iOS 和 Android 的 Flutter 插件,用于从图像库中选取图像,或者使用相机拍摄新照片。

path_provider (文件系统)

pub-web.flutter-io.cn/packages/pa…

用于查找文件系统上的常用位置,也可以实现文本的读写

cached_network_image

pub-web.flutter-io.cn/packages/ca…

用于显示来自互联网的图像并将其保存在缓存目录中。

数据存储

shared_preferences (数据存储)

pub-web.flutter-io.cn/packages/sh…

包装简单数据的特定于平台的持久存储。数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,因此该插件不得用于存储关键数据。

注:这里我还想提一嘴 path_provider 库,对于静态应用,想在本地通过写入文件的方式(比如读写 json)存储数据的话,path_provider 是一个比较简单的方案。

扫码

qr_flutter (二维码渲染)

pub-web.flutter-io.cn/packages/qr…

用于通过 Widget 或自定义 Painter 进行简单快速的 QR 代码渲染。

mobile_scanner (QR扫码)

pub-web.flutter-io.cn/packages/mo…

基于 MLKit 的 Flutter 通用扫描仪。

文本

auto_size_text (自动文本大小)

pub-web.flutter-io.cn/packages/au…

可自动调整文本大小,文本适配的方案。

mask_text_input_formatter

pub-web.flutter-io.cn/packages/ma…

文本格式化的方案。

后台任务及通知功能

background_fetch (后台周期任务)

pub-web.flutter-io.cn/packages/ba…

Background Fetch 是一个非常简单的插件,大约 每 15 分钟 就会在后台唤醒一个应用程序,提供较短的后台运行时间。每当发生后台获取事件时,该插件就会执行你提供的内容。

flutter_background_service

pub-web.flutter-io.cn/packages/fl…

可以开启一个前台服务。

Awesome_notifications (通知)

pub-web.flutter-io.cn/packages/aw…

在Flutter上使用自定义本地和推送通知来吸引用户,但实际中我只是用了 flutter_local_notifications。

flutter_local_notifications (通知)

pub-web.flutter-io.cn/packages/fl…

用于显示本地通知的跨平台插件。

地理位置、网络状态、权限控制

geolocator (地理位置)

pub-web.flutter-io.cn/packages/ge…

Flutter 地理定位插件,可轻松访问特定于平台的位置服务

geocoding(地理编码)

pub-web.flutter-io.cn/packages/ge…

提供了简单的地理编码和反向地理编码功能。

connectivity_plus (网络)

pub-web.flutter-io.cn/packages/co…

该插件允许 Flutter 应用程序发现网络连接并进行相应的处理。

wifi_iot

pub-web.flutter-io.cn/packages/wi…

可以获取 wifi 信息。

permission_handler (权限处理)

pub-web.flutter-io.cn/packages/pe…

该插件提供跨平台(iOS、Android)API 来请求权限并检查权限状态。

响应式

sizer (响应式)

pub-web.flutter-io.cn/packages/si…

一个 Flutter 插件,可轻松使 Flutter 应用程序响应。自动调整 UI 以适应不同的屏幕尺寸。响应能力变得简单。

responsive_framework (响应式)

pub-web.flutter-io.cn/packages/re…

响应式框架包含可帮助开发人员为移动、桌面和网站布局构建响应式应用程序的小部件。

flutter_staggered_grid_view (网格布局)

pub-web.flutter-io.cn/packages/fl…

提供了 Flutter 网格布局的集合。

音视频播放器、图表集成

audioplayers(音频播放器)

pub-web.flutter-io.cn/packages/au…

一个可同时播放多个音频文件的 Flutter 插件

video_player(视频播放器)

pub-web.flutter-io.cn/packages/vi…

适用于 iOS、Android 和 Web 的 Flutter 插件,用于在 Widget 表面上播放视频

flutter_sound(录音)

pub-web.flutter-io.cn/packages/fl…

播放和录制音频的解决方案。

fl_chart(Flutter 图表库)

pub-web.flutter-io.cn/packages/fl…

高度可定制的 Flutter 图表库,支持折线图、条形图、饼图、散点图和雷达图。

轮播、滑块

syncfusion_flutter_sliders(滑块)

pub-web.flutter-io.cn/packages/sy…

Flutter Sliders 包是用 Dart 原生编写的,用于创建高度交互且 UI 丰富的滑块小部件,以便在 Flutter 应用程序中进行过滤。

card_swiper

pub-web.flutter-io.cn/packages/ca…

swiper 解决方案,他就是原来的 flutter_swiper。可以说是 swiper 最好的方案,没有之一。

底部选择器

day_night_time_picker

pub-web.flutter-io.cn/packages/da…

零依赖的 Flutter 昼夜时间选择器。

flutter_datetime_picker_plus / bottom_picker

pub-web.flutter-io.cn/packages/fl…

pub-web.flutter-io.cn/packages/bo…

底部时间选择器

HTML

flutter_widget_from_html

pub-web.flutter-io.cn/packages/fl…

是的,你没有看错,也没有理解错,他就是干这个的!

Scroll

Flutter 的 ListView 已经足够强大,但是这里还是有几个很强大的库。

infinite_scroll_pagination

pub-web.flutter-io.cn/packages/in…

无限滚动分页。

scrollable_positioned_list

pub-web.flutter-io.cn/packages/sc…

当你需要通过列表索引滚动,或者需要知道当前你滚动到了第几个索引时,这个库会很有用,尤其是列表高度并不确定或者不一致的情况下

scrollview_observer

pub-web.flutter-io.cn/packages/sc…

这个库,可能比较小众,但是他实现了 ListView 使用的某些小痛点,看官使用 ListView 应该非常熟练了,按我的理解来说,我们非常方便的可以获取到当前列表滚动的距离,但是却不好获取列表项索引的信息,毕竟你的列表项可能是高度不定或者内容不定,又或者懒加载而来等等,因此遇到诸如:滑动到某一项后,更新下标索引的功能时,就会突然两眼一黑。

当然也得推荐大佬的文章:

juejin.cn/post/710305…

其他

dotted_border

pub-web.flutter-io.cn/packages/do…

虚线边框的解决方案。

clipboard(剪切板)

pub-web.flutter-io.cn/packages/cl…

无需多言。

share_plus

pub-web.flutter-io.cn/packages/sh…

想要分享功能,使用它就对了。

date_format(时间格式化)

pub-web.flutter-io.cn/packages/da…

时间格式化,想怎么化就怎么化。

flutter_launcher_icons (启动图标)

pub-web.flutter-io.cn/packages/fl…

一个命令行工具,可简化更新 Flutter 应用程序启动器图标。

flutter_dotenv

pub-web.flutter-io.cn/packages/fl…

通过 .env 设置配置或环境变量。

flutter_overlay_window (桌面悬浮框)

pub-web.flutter-io.cn/packages/fl…

可以实现桌面悬浮框,类似:一个圆形的球?

url_launcher

pub-web.flutter-io.cn/packages/ur…

让你在移动平台上打开默认浏览器以显示给定的 URL。

in_app_review (显示评论弹出窗口)

pub-web.flutter-io.cn/packages/in…

可让您显示评论弹出窗口,用户可以在其中为您的应用留下评论,而无需关闭您的应用。

easy_localization (国际化方案)

pub-web.flutter-io.cn/packages/ea…

可以轻松快速的实现 flutter 应用国际化。

uuid

pub-web.flutter-io.cn/packages/uu…

可快速生成 UUID

showcaseview

pub-web.flutter-io.cn/packages/sh…

允许你逐步展示/突出显示您的小部件(蒙版解决方案)。

Play Install Referrer 库

pub-web.flutter-io.cn/packages/an…

可以使用 Google Play 商店的 Install Referrer API 从 Google Play 安全地检索引荐来源内容,希望你不会用到它。

google_mobile_ads

pub-web.flutter-io.cn/packages/go…

不用介绍它是谁,不知道的,你一定用不到,如果你用到了,那祝你好运。

后续,如果我记得的话,也许还会更新......