我正在使用Dismissible小部件在应用程序中进行一些类似火种的轻扫。这意味着我实质上是在刷掉我的整个小部件。这意味着我没有可以关闭项目的ListView构建器。我该如何处理onDismissed而不将我的所有项目事先放入列表中?
我已经尝试过使用伪造的列表,在其中给它提供一个ID,然后将其删除。但这似乎无能为力,可以在下面看到此代码。
static var uuid = new Uuid();
final dismissRemover = List<String>.generate(50, (i) => "item: '$uuid'");
body: Dismissible(
key: new Key(dismissRemover[0]),
background: Container(
color: Colors.red,
child: Icon(
Icons.thumb_down,
color: Colors.white,
size: 150.0,
),
),
secondaryBackground: Container(
color: Colors.green,
child: Icon(
Icons.thumb_up,
color: Colors.white,
size: 150.0,
),
),
onDismissed: (direction) {
if (direction == DismissDirection.endToStart) {
setState(() {
_newPolitician.performPolitician(true, context, item[_politicianNo]['id'], _collectionName);
dismissRemover.removeAt(0);
});
} else {
setState(() {
_newPolitician.performPolitician(false, context, item[_politicianNo]['id'], _collectionName);
dismissRemover.removeAt(0);
});
}
},
您知道如何解决此问题吗?
答案 0 :(得分:1)
如果您想要像卡片刷卡UI这样的小工具,可以使用这些项目从这些项目中准备一些代码:
已编辑: 您的要求是
解决方案使用这样的堆栈:
Stack(
children: <Widget>[
Dismissible(
key: Key('Card'),
child: Card(
child: Padding(
padding: const EdgeInsets.all(80.0),
child: Icon(Icons.accessibility),
),
),
),
Dismissible(
key: Key('Card 1'),
child: Card(
child: Padding(
padding: const EdgeInsets.all(80.0),
child: Icon(Icons.accessibility),
),
),
),
],
)