flutter_easyloading: 一个简单易用的Flutter插件,包含23种loading动画效果、进度条展示、Toast展示。纯Flutter端实现,支持iOS、Android。
前言
Flutter
是Google
在2017年推出的一套开源跨平台UI
框架,可以快速地在iOS
、Android
和Web
平台上构建高质量的原生用户界面。Flutter
发布至今,不可谓不说是大受追捧,吸引了大批App
原生开发者、Web
开发者前赴后继的投入其怀抱,也正由于Flutter
是跨平台领域的新星,总的来说,其生态目前还不是十分完善,我相信对于习惯了原生开发的同学们来说,找轮子肯定没有了那种章手就莱的感觉。比如说这篇文章即将讲到的,如何在Flutter
应用内简单、方便的展示Toast
或者Loading
框呢?
探索
起初,我也在pub上找到了几个比较优秀的插件:
- FlutterToast: 这个插件应该是很多刚入坑
Flutter
的同学们都使用过的,它依赖于原生,但对于UI层级的问题,最好在Flutter端解决,这样便于后期维护,也可以减少兼容性问题; - flutter_oktoast: 纯
Flutter
端实现,调用方便。但缺少loading
、进度条展示,仍可自定义实现;
试用过后,发现这些插件都或多或少不能满足我们的产品需求,于是便结合自己产品的需求来造了这么个轮子,也希望可以帮到有需要的同学们。效果预览:
![](https://oss.jqhtml.com/wp-content/uploads/2020/6/bUbaqa.gif)
实现
showDialog 实现
先看看初期我们实现弹窗的方式showDialog
,部分源码如下:
Future<T> showDialog<T>({
@required BuildContext context,
bool barrierDismissible = true,
@Deprecated(
'Instead of using the "child" argument, return the child from a closure '
'provided to the "builder" argument. This will ensure that the BuildContext '
'is appropriate for widgets built in the dialog. '
'This feature was deprecated after v0.2.3.'
)
Widget child,
WidgetBuilder builder,
bool useRootNavigator = true,
})
这里有个必传参数context
,想必接触过Flutter
开发一段时间的同学,都会对BuildContext
有所了解。简单来说BuildContext
就是构建Widget
中的应用上下文,是Flutter
的重要组成部分。Buil