【问题标题】:Flutter like_button animation lags on tapFlutter like_button 动画延迟点击
【发布时间】:2021-05-22 09:56:28
【问题描述】:

我正在使用https://pub.dev/packages/like_button 版本like_button:^1.0.4。

LikeButton(
        onTap: (value) {
          onGroupVotePress(document);
          return Future.value(!value);
        },
      ),

当我运行我的onGroupVotePress 函数时,我的like_button 动画崩溃了。

void onGroupVotePress(DocumentSnapshot document) {
      Network().appendToGroupList(document.id);
      Network().appendToGroupList(document.id);
  }

我的 appendToGroupList 函数是一个简单的 Firestore 更新:

Future appendToGroupList(String groupId, String field, List list) async {
    FirebaseFirestore.instance
        .collection('groups')
        .doc(groupId)
        .update({field: FieldValue.arrayUnion(list)});
  }

为什么要在 onTap 中添加一个简单的 void 函数以防止 like_button 滞后?

另外,在like_button onTap 完成后如何运行代码?

谢谢。

【问题讨论】:

  • 是调试版本还是发布版本?
  • 这是一个发布版本
  • 有时动画会依赖于移动设备。
  • 情况并非如此,因为如果我删除我的 onGroupVotePress 函数 - 一切正常。

标签: flutter dart flutter-animation


【解决方案1】:

试试下面的代码:

LikeButton(
  onTap: (value) async {
    await onGroupVotePress(document);
    return !value;
  },
),
Future<void> onGroupVotePress(DocumentSnapshot document) async {
  await Network().appendToGroupList(document.id);
  await Network().appendToGroupList(document.id);
}
Future<void> appendToGroupList(String groupId, String field, List list) async {
  await FirebaseFirestore.instance.collection('groups').doc(groupId).update({
    field: FieldValue.arrayUnion(list)
  });
}

【讨论】:

  • 嘿@Rehmat 感谢您的帮助。它确实奏效了!但我不想使用await。你觉得还有别的办法吗?
  • 我可以在 like_button 执行后运行任何代码吗?
  • 没有提供这个功能,但是你可以修改这个包的代码并添加你的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多