0

我正在使用 Dismissible 小部件在我的应用程序中进行一些类似 tinder 的滑动。这意味着我基本上是在刷掉我的整个小部件。这意味着我没有 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);
            });
          }
        },

你知道如何解决这个问题吗?

4

1 回答 1

1

如果你想要像刷卡 UI 这样的火种,你可以从这些项目中准备一些代码,使用它们:

  1. 刷卡v1
  2. 刷卡 v2

编辑: 你的要求是

  1. 你要刷卡。
  2. 您需要 Dismissible 提供的动画。
  3. 你不想要 List 并且想要一个类似 tinder 的 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),
      ),
    ),
  ),
],
)

(请注意,上面的代码很脏,只是为了让您了解将堆栈用于所需的 UI) 在此处输入图像描述

于 2019-04-13T10:04:07.763 回答