用Flutter中的新小部件替换dismissed小部件

问题描述 投票:0回答:1

我的Dismissable小部件的当前实现出现错误。它返回'确保实现onDismissed处理程序并立即删除Dismissable小部件'错误。这个错误对我有意义,但我试图重置小部件的状态。我无法弄清楚如何设置onDismissed属性返回一张新卡。我正在使用卡上的Dismissable小部件。我希望能够解除卡并自动更换新卡。难以置信的小部件甚至是我应该采取的适当路线吗?谢谢。

dart flutter
1个回答
0
投票

如果你要包含你的代码(配对到必要的代码),那么很可能会更容易看到正在发生的事情。在以后的问题中,请提供一个示例,因为它可以帮助我们帮助您=)。

话虽这么说,似乎你可能会对如何使用Dismissable小部件产生一些混淆。基本上,它将显示其子项并将处理解雇手势,但您有责任将其从列表中删除(假设这在列表中)。来自Dismissable documentation:

如果Dismissible是一个列表项,它必须有一个键区别于其他项,并且它的onDismissed回调必须从列表中删除该项。

这就是说,如果Dismissable在列表中,您必须从外部管理列表的状态和其中的项目。如果在Dismissable不在列表中时也是如此,我不会感到惊讶。

基本上,您应该在该回调中执行某些操作,以从列表中删除Dismissable及其子项。发生这种情况的最可能方式是Dismissable及其包含的列表是在继承State的类中构建的。

例如,您有一个存储为州的成员变量的项目列表:1,2,3,4,5,6,7,8,9,10。如果你解雇8,你应该从列表1,2,3,4,5,6,7,9,10建立。如果您只是从列表中删除第8项,它将无法正常工作,因为dart不够智能,无法比较列表项 - 它仍然会将列表视为同一列表。因此,您可以在不使用8的情况下制作列表的副本,并将成员设置为该值,或者使用第二个变量(类似于count),只要有变化就会增加,以便flutter知道重建State。

现在,你正在做的事情比那更复杂 - 你想用其他东西替换项目。我当时建议做的是改变(或复制)1,2,3,4,5,6,7,8,9,10 - > 1,2,3,4,5,6,7的清单形式, OnDismissed回调中的8 *,9,10,并且适当地调用setState,其中8 *是某种对象,表示列表项已被解除。

在构建列表项时,应考虑到8已更改为8 *并适当构建新窗口小部件的事实。

© www.soinside.com 2019 - 2024. All rights reserved.