Flutter GestureDetector 和 SmoothStarRaiting

Flutter GestureDetector and SmoothStarRaiting

我遇到了 GestureDetector 包装 SmoothStarRating 的问题,由于某些奇怪的原因,onHorizo​​ntalDragEnd 不起作用。我只能检测到 onTap 或 onLongPressEnd。 onRatingChanged 运行良好,但它在拖动和更新评级时多次调用 BE。这就是为什么我用 GestureDetector 包装它(仅在拖动完成时更新评级)。 有谁知道如何解决这个问题?

我在下面附上一段代码。

GestureDetector(
  onHorizontalDragEnd: (detail){
    print("on drug end doesnt work");
    // when drug is finished update record in DB
  },
  onLongPressEnd: (detail){
    print("this works");

  },
  child: Container(
    child: SmoothStarRating(
        allowHalfRating: true,
        onRatingChanged: (v) {
                // sending Bloc event to update raiting
              },
        starCount: 5,
        rating: (rating),

您使用的是哪个版本的软件包?我假设它低于 v1.1.0,因为您的代码包含现已删除的 onRatingChanged 回调。

如果我对您的问题的理解正确:您对评级更改事件执行了昂贵的操作,因此您需要对事件进行去抖动。

如果我的评估是正确的,那很简单:您需要将软件包升级到 v1.1.0,因为它会改变 onRated 的行为,有效地消除它的抖动:

onRated will be called only once for each rating action.For a rating value n , the onRated callback value when half star rating is enabled will be n.5 . Eg: 2.5,3.5 etc.Otherwise the onRated callback value will be n.

注意:回调的名称已更改为 onRated(从 onRatingChanged)。否则,您的代码应该可以正常工作。