当前位置: 首页 > 知识库问答 >
问题:

如何消除onDismissible处理程序错误?

胡越泽
2023-03-14

我正在尝试使用Dismissible()从交易列表和应用程序屏幕中删除其中一个交易。但我得到了错误

class TransactionList extends StatefulWidget {
  final List<Transaction> transactions;
  final Function deleteTx;

  TransactionList(this.transactions, this.deleteTx);

  @override
  _TransactionListState createState() => _TransactionListState();
}

class _TransactionListState extends State<TransactionList> {
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 350,
      child: widget.transactions.isEmpty
          ? Column(...
            )
          : ListView.builder(
              itemBuilder: (ctx, index) {
                return Dismissible(
                  key: Key(widget.transactions[index].getId()),
                  onDismissed: (direction) {
                    setState(() {
                      widget.deleteTx;
                    });
                    Scaffold.of(context).showSnackBar(
                      SnackBar(
                          content: Text("${widget.transactions[index].getTitle()} dismissed")),
                    );
                  },
                  background: Container(
                    color: Colors.red,
                  ),
                  child: Card(
                    elevation: 5,
                    margin: EdgeInsets.symmetric(
                      vertical: 8,
                      horizontal: 5,
                    ),
                    child: ListTile(

    //Formatting the amount entered of the transaction 

                      leading: CircleAvatar(
                        ... ,
                          ),
                        ),
                      ),

    //formatting the name/title of the transaction

                      title: Text(
                        ... ,
                      ),

//formatting the date of the transaction
    
                      subtitle: Text(
                        ... ,
                      ),

// adding a delete icon in the transaction card

                      trailing: IconButton(
                        icon: Icon(Icons.delete),
                        color: Theme.of(context).errorColor,
                        onPressed: () =>
                            widget.deleteTx(widget.transactions[index].getId()),
                      ),
                    ),
                  ),
                );
              },
              itemCount: widget.transactions.length,
            ),
    );
  }
}

deletetx只是我的main.dart文件中的一个函数,它删除事务并更改状态。

void _deleteTransaction(String id) {
    setState(() {
      _userTrx.removeWhere((element) {
        return element.getId() == id;
      });
    });
  }

共有1个答案

马清野
2023-03-14

我将上面代码段中的ondisceled()更改为:

onDismissed: (direction) => widget.deleteTx( widget.transactions[index].getId() ),

对我有效。

 类似资料:
  • 我正在使用netty构建一个应用程序。在应用程序中,我需要处理传入和传出的消息。要求是应用程序将发送的任何消息都应由特定的处理程序处理,进入应用程序的任何消息都应由另一个特定的处理程序处理。但是,我希望在两个处理程序之间交换消息,以便能够跟踪发送的消息响应,因为请求消息也将发送到应用程序。 请任何想法hwo实施这样的要求。这个问题听起来可能不相关,但这就是我得到的,我还不是一个网络极客。我读到的关

  • 问题内容: 我的主活动调用了我的子活动中的处理程序。该处理程序由某些Runnable 的子类使用,但我无法对其进行管理。现在,在这种情况下,我需要先删除它们,然后再完成“活动”(以某种方式调用,但仍然会反复调用)。无论如何,要从处理程序中删除所有回调吗? 问题答案: 以我的经验,这非常有效! 在removeCallbacksAndMessages的文档中,它说… 删除obj为令牌的回调和已发送消息

  • 更新:移动了删除部分,在setState之前,我得到了错误:一个被解雇的可解雇小部件仍然是树的一部分,每次我刷到解雇

  • 我正在构建一个应用程序,其中微服务通过RabbitMQ(请求-响应模式)进行通信 一切正常,但我仍然有一个错误“远程服务中没有定义匹配的消息处理程序。”- 当我向客户端应用程序发送帖子时,它只需通过客户端(ClientProxy)发送包含数据的消息,消费者应用程序就会响应。此功能实际上可以工作,但始终只能第二次使用。我知道这听起来很奇怪,但在我的第一个POST请求中,总是有来自客户的错误,我的每一

  • 问题内容: 我在web.xml中配置了一个错误servlet: 对? 在我的(通常)servlet中: 因此,在这种情况下,“ e”将是根本原因。 在我的ExceptionHandler类中,我有: 这就是问题。throwable.getCause()为null。 问题答案: 如果由servletcontainer捕捉到的异常是和声明捕捉异常 其他 比,那么它的原因实际上是打开并作为存储。因此,您