189 8069 5689

flutter关闭,flutter关闭网络缓存

Flutter中showDialog()后关闭Dialog

在耗时操作的时候,一般都要弹出一个加载框,然后在完成的时候再把加载框关掉,在Flutter中可以直接用showDialog()来弹出一个对话框。

“只有客户发展了,才有我们的生存与发展!”这是创新互联建站的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对做网站、成都网站制作、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

这是一个简单的提示对话框,包含了关闭按钮,点击就能关闭。但一般的耗时操作完成,就需要我们自己把dialog关闭掉。

首先,开启dialog的时机。由于我们需要获取到BuildContext,所以就得等build()方法走完,这里可以用Future.delayed()来等创建好BuildContext再进行创建,或者用Timer来延迟操作,我选择了前者。

其中delayed()在initState()结尾来做就行,这里参考网友封装了一个LoadingDialog。

那么接下来要在什么时机关闭呢?

一开始,我理所当然的以为,是在异步方法结束后,去更新界面的时候关闭,也就是setState(() {})的时候,可是不管怎么尝试,用Navigator.pop()不行,用Navigator.of(context, rootNavigator: true).pop(result)也不行,用FlutterBoost.singleton.close(id)也不行,用FlutterBoost.singleton.closeCurrent()也不行,都会直接把非Dialog的页面也关闭掉,这让我百思不得其解,因为showDialog()的本质也是新建了一个Route出来,也就是最顶层的页面是弹出的Dialog,可是为什么关不掉呢。

一番思前想后,把showDialog的逻辑移到和异步逻辑同级,也就是setState(() {})外面,然后把showDialog()自身创建的BuildContext传进去就能正常关闭了。也就是,在setState(() {})的时候,其实用的context还是非Dialog页面的,所以关闭的当然就不是Dialog了。

持有Dialog自己的BuildContext,然后在异步以后调用就行了。

Flutter 全局关闭键盘

一般的关闭键盘需要关联context,如下,当子页面弹出的键盘,操作父级页面或者顶级页面时,如滑动打开系统级抽屉,这时候就不太实用,可以用开头的方法了

Flutter 侧边栏的使用,打开和关闭

在网上好多方法 但是有些点没有讲到

简单的说就是在 Scaffold 添加 Drawer

这个AppBarUtil.getAppBar 是我自己创建的方法 当初因为自定义的按钮所以找了一些时间怎么打开和关闭

不过如果不是自定义 的appBar 应该直接就会显示不会出现需要调用打开方法的情况


分享标题:flutter关闭,flutter关闭网络缓存
网页网址:http://cdxtjz.com/article/dsijshs.html

其他资讯