簡體   English   中英

如何修復“已關閉的 Dismissible 小部件仍然是樹的一部分。” 在 flutter

[英]How to fix 'A dismissed Dismissible widget is still part of the tree.' in flutter

我顯示CupertinoPopupSurface並使用Dismissible小部件通過手勢關閉對話框。 當我向下滑動時,我調用Navigator.of(context).pop(); 關閉對話框並返回到上一個屏幕,但我收到錯誤消息,提示Dismissible仍然是樹的一部分。

我嘗試提供唯一鍵Dismissible(key: UniqueKey(), ...)但它仍然無法正常工作。

 CupertinoPopupSurface(
   isSurfacePainted: false,
   child: Container(
     padding: const EdgeInsets.only(top: 100),
     child: Dismissible(
       key: UniqueKey(),
       direction: DismissDirection.down,
       onDismissed: (direction) {
         Navigator.of(context).pop();
       },
       child: Container(
           decoration: BoxDecoration(
             borderRadius:
                 BorderRadius.vertical(top: Radius.circular(40)),
           ),
           child: ZoneFilter(
               visit: visit, accountsViewModel: accountsViewModel)),
     ),
   ),
 );

我想打電話給Navigator.of(context).pop(); 並擺脫 Dismissible 小部件。

您的 Dismissible 小部件在您的 Popup 內,而不是應該在它周圍。 您可以通過將其更改為下面的代碼來使其工作。 不過公平的警告,它會感覺很慢,因為只有在關閉 animation 完成后,對話框的深色背景才會消失。

return Dismissible(
    key: UniqueKey(),
    direction: DismissDirection.down,
    onDismissed: (direction) => Navigator.of(context).pop();,
    child:  CupertinoPopupSurface(
      isSurfacePainted: false,
      child: Container(
        padding: const EdgeInsets.only(top: 100),
        child: Container(
          decoration: BoxDecoration(
            borderRadius:
            BorderRadius.vertical(top: Radius.circular(40)),
          ),
          child: ZoneFilter(
            visit: visit, accountsViewModel: accountsViewModel)),
          ),
        ),
      ),
    );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM