Flutter :用什么代替 willPopScope?
共 2038字,需瀏覽 5分鐘
·
2024-07-18 11:30
大家好,在搜索了 willPopScope Widget 的替代品后,我在此與大家分享。讓我們先簡要介紹一下 WillpopScope Widget,以便您了解兩者之間的區(qū)別。
什么是 WillpopScope Widget?
正如你們中的一些人所知,WillpopScope 是 flutter 中的一個 Widget,它允許我們在按下設(shè)備的后退按鈕時執(zhí)行一些任務(wù)或操作。借助此 Widget,當用戶按下設(shè)備的后退按鈕或通過將函數(shù)傳遞給“onWillPop”來執(zhí)行任務(wù)時,我們可以導航到其他屏幕。
-
onWillPop:此參數(shù)使用布爾值確定是否應(yīng)彈出頁面?;蛘?,如果用戶按后退按鈕,我們可以顯示對話框,或者我們可以執(zhí)行任何其他任務(wù)。 -
child:視圖的小部件。在這里,我們添加了調(diào)用 onWillPop 函數(shù)時要處理的小部件。
WillpopScope({
Key? key,
required Widget child,
required WillPopCallback? onWillPop,
}
但是,有些人知道 WillpopScope 在 v3.12.0–1.0.pre 之后已被棄用。所以解決方案是“PopScope”。
什么是 PopScope Widget?
因此,正如我之前提到的,它是 WillPopScope 的替代方案,因此很明顯您知道答案是什么。但是等等,讓我來解釋一下你的答案。
PopScope 類似于 WillpopScope。它與 WillPopScope 一樣,有助于管理系統(tǒng)的后置手勢。它有三個參數(shù):
-
canPop:canPop 參數(shù)可用于啟用/禁用系統(tǒng)后退手勢。它接受布爾值。當設(shè)置為 true (默認)時,系統(tǒng)的后退手勢可以正常工作。如果設(shè)置為 false ,它將禁用后退手勢。 -
onPopInvoked:onPopInvoked 參數(shù)是系統(tǒng)返回手勢發(fā)生時觸發(fā)的回調(diào)函數(shù),無論成功與否。僅當canPop參數(shù)設(shè)置為 true 時才會調(diào)用它,允許您執(zhí)行自定義邏輯或執(zhí)行特定操作以響應(yīng)用戶嘗試向后導航。 -
child:視圖的小部件。在這里,我們添加了調(diào)用onPopInvoked函數(shù)時要處理的小部件。
我在使用 PopScope 時遇到的問題
在我的案例中,我希望在用戶嘗試關(guān)閉頁面時顯示確認對話框,而 WillPopScope 在這種情況下工作得很好。
然而,設(shè)置 canPop: false 并在 onPopInvoked 內(nèi)部編寫對話提示邏輯,并不能解決問題,因為 NavigatorState.maybePop 的結(jié)果是在用戶響應(yīng)對話之前返回的。
此外,popDisposition 是同步的,而 willPop 是異步的。這導致無法提示對話。
最后,這就是我寫這篇文章的原因,以便大家都可以閱讀并弄清楚要使用什么。在我看來,我避免使用 PopScope。
翻譯自:https://medium.com/@web.pinkisingh/flutter-what-to-use-instead-of-willpopscope-89af2d5ff4c6
