簡體   English   中英

已關閉的 Dismissible 小部件仍然是樹的一部分。 從列表中刪除項目后重復出現此錯誤

[英]A dismissed Dismissible widget is still part of the tree. Getting this error repeatedly after removing item from list

我已將 UniquiId 設置為 Dismissible Widget 的鍵。 之后添加一些項目,我有些解雇了一個項目。 當我轉到下一頁時,我收到一個錯誤(已關閉的 Dismissible 小部件仍然是樹的一部分。)即使在已關閉的回調中使用 Provider 從列表中刪除項目后也是如此。

    @override
  Widget build(BuildContext context) {
    return Dismissible(
      key: UniqueKey(),
      direction: DismissDirection.endToStart,
      confirmDismiss: (direction) {
        return showDialog(
          context: context,
          builder: (context) => AlertDialog(
            title: Text('Are you sure?'),
            content: Text(
              'Dou you want to remove the item from the cart?',
            ),
            actions: [
              FlatButton(
                onPressed: () {
                  Navigator.of(context).pop(false);
                },
                child: Text('No'),
              ),
              FlatButton(
                onPressed: () {
                  Navigator.of(context).pop(true);
                },
                child: Text('Yes'),
              ),
            ],
          ),
        );
      },
      onDismissed: (direction) {
          Provider.of<Cart>(context, listen: false)
              .removeItem(productId);
      },
      background: Container(
        color: Theme.of(context).errorColor,
        child: Icon(
          Icons.delete,
          color: Colors.white,
          size: 40,
        ),
        alignment: Alignment.centerRight,
        padding: EdgeInsets.only(right: 20),
        margin: EdgeInsets.symmetric(
          horizontal: 15,
          vertical: 4,
        ),
      ),
      child: Container(
        child: Padding(
          padding: EdgeInsets.all(8),
          child: ListTile(
            leading: CircleAvatar(
              child: Padding(
                padding: EdgeInsets.all(5),
                child: FittedBox(
                  child: Text('\₹${(price * quantity)}'),
                ),
              ),
            ),
            title: Text(title),
            subtitle: Text(laundryName.toUpperCase()),
            trailing: Text('$quantity x'),
          ),
        ),
      ),
    );
  }
}

請幫助我在這個嘗試了很多仍然得到同樣的錯誤。 提前致謝。

確保項目已從根列表中刪除。 如果您正在使用提供程序,則通過將 listView.builder 小部件保留在 Consumer 下來獲取更新的數據。 這樣當您關閉一個項目時,它將被更新。

暫無
暫無

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

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