在耗時操作的時候,一般都要彈出一個加載框,然后在完成的時候再把加載框關(guān)掉,在Flutter中可以直接用showDialog()來彈出一個對話框。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)建站的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
這是一個簡單的提示對話框,包含了關(guān)閉按鈕,點(diǎn)擊就能關(guān)閉。但一般的耗時操作完成,就需要我們自己把dialog關(guān)閉掉。
首先,開啟dialog的時機(jī)。由于我們需要獲取到BuildContext,所以就得等build()方法走完,這里可以用Future.delayed()來等創(chuàng)建好BuildContext再進(jìn)行創(chuàng)建,或者用Timer來延遲操作,我選擇了前者。
其中delayed()在initState()結(jié)尾來做就行,這里參考網(wǎng)友封裝了一個LoadingDialog。
那么接下來要在什么時機(jī)關(guān)閉呢?
一開始,我理所當(dāng)然的以為,是在異步方法結(jié)束后,去更新界面的時候關(guān)閉,也就是setState(() {})的時候,可是不管怎么嘗試,用Navigator.pop()不行,用Navigator.of(context, rootNavigator: true).pop(result)也不行,用FlutterBoost.singleton.close(id)也不行,用FlutterBoost.singleton.closeCurrent()也不行,都會直接把非Dialog的頁面也關(guān)閉掉,這讓我百思不得其解,因?yàn)閟howDialog()的本質(zhì)也是新建了一個Route出來,也就是最頂層的頁面是彈出的Dialog,可是為什么關(guān)不掉呢。
一番思前想后,把showDialog的邏輯移到和異步邏輯同級,也就是setState(() {})外面,然后把showDialog()自身創(chuàng)建的BuildContext傳進(jìn)去就能正常關(guān)閉了。也就是,在setState(() {})的時候,其實(shí)用的context還是非Dialog頁面的,所以關(guān)閉的當(dāng)然就不是Dialog了。
持有Dialog自己的BuildContext,然后在異步以后調(diào)用就行了。
一般的關(guān)閉鍵盤需要關(guān)聯(lián)context,如下,當(dāng)子頁面彈出的鍵盤,操作父級頁面或者頂級頁面時,如滑動打開系統(tǒng)級抽屜,這時候就不太實(shí)用,可以用開頭的方法了
在網(wǎng)上好多方法 但是有些點(diǎn)沒有講到
簡單的說就是在 Scaffold 添加 Drawer
這個AppBarUtil.getAppBar 是我自己創(chuàng)建的方法 當(dāng)初因?yàn)樽远x的按鈕所以找了一些時間怎么打開和關(guān)閉
不過如果不是自定義 的appBar 應(yīng)該直接就會顯示不會出現(xiàn)需要調(diào)用打開方法的情況
網(wǎng)頁標(biāo)題:flutter關(guān)閉,flutter關(guān)閉網(wǎng)絡(luò)緩存
當(dāng)前路徑:http://chinadenli.net/article43/dsijshs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、自適應(yīng)網(wǎng)站、品牌網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、App開發(fā)、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)