mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-09 04:24:53 +08:00
add interact action throttle
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:PiliPlus/pages/dynamics_repost/view.dart';
|
|||||||
import 'package:PiliPlus/utils/num_utils.dart';
|
import 'package:PiliPlus/utils/num_utils.dart';
|
||||||
import 'package:PiliPlus/utils/page_utils.dart';
|
import 'package:PiliPlus/utils/page_utils.dart';
|
||||||
import 'package:PiliPlus/utils/request_utils.dart';
|
import 'package:PiliPlus/utils/request_utils.dart';
|
||||||
|
import 'package:easy_debounce/easy_throttle.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
|
||||||
@@ -34,19 +35,23 @@ class ActionPanel extends StatelessWidget {
|
|||||||
child: Builder(
|
child: Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return TextButton.icon(
|
return TextButton.icon(
|
||||||
onPressed: () => showModalBottomSheet(
|
onPressed: () => EasyThrottle.throttle(
|
||||||
context: context,
|
'interactAction',
|
||||||
isScrollControlled: true,
|
const Duration(milliseconds: 200),
|
||||||
useSafeArea: true,
|
() => showModalBottomSheet(
|
||||||
builder: (_) => RepostPanel(
|
context: context,
|
||||||
item: item,
|
isScrollControlled: true,
|
||||||
onSuccess: () {
|
useSafeArea: true,
|
||||||
int count = forward.count ?? 0;
|
builder: (_) => RepostPanel(
|
||||||
forward.count = count + 1;
|
item: item,
|
||||||
if (context.mounted) {
|
onSuccess: () {
|
||||||
(context as Element?)?.markNeedsBuild();
|
int count = forward.count ?? 0;
|
||||||
}
|
forward.count = count + 1;
|
||||||
},
|
if (context.mounted) {
|
||||||
|
(context as Element?)?.markNeedsBuild();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
@@ -67,7 +72,11 @@ class ActionPanel extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: TextButton.icon(
|
child: TextButton.icon(
|
||||||
onPressed: () => PageUtils.pushDynDetail(item, isPush: true),
|
onPressed: () => EasyThrottle.throttle(
|
||||||
|
'interactAction',
|
||||||
|
const Duration(milliseconds: 200),
|
||||||
|
() => PageUtils.pushDynDetail(item, isPush: true),
|
||||||
|
),
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
FontAwesomeIcons.comment,
|
FontAwesomeIcons.comment,
|
||||||
size: 16,
|
size: 16,
|
||||||
@@ -92,14 +101,18 @@ class ActionPanel extends StatelessWidget {
|
|||||||
semanticLabel: like.status! ? "已赞" : "点赞",
|
semanticLabel: like.status! ? "已赞" : "点赞",
|
||||||
);
|
);
|
||||||
return TextButton.icon(
|
return TextButton.icon(
|
||||||
onPressed: () => RequestUtils.onLikeDynamic(
|
onPressed: () => EasyThrottle.throttle(
|
||||||
item,
|
'interactAction',
|
||||||
likeIcon.color == primary,
|
const Duration(milliseconds: 200),
|
||||||
() {
|
() => RequestUtils.onLikeDynamic(
|
||||||
if (context.mounted) {
|
item,
|
||||||
(context as Element?)?.markNeedsBuild();
|
likeIcon.color == primary,
|
||||||
}
|
() {
|
||||||
},
|
if (context.mounted) {
|
||||||
|
(context as Element?)?.markNeedsBuild();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
icon: likeIcon,
|
icon: likeIcon,
|
||||||
style: btnStyle,
|
style: btnStyle,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
|
|||||||
show ReplyInfo;
|
show ReplyInfo;
|
||||||
import 'package:PiliPlus/http/reply.dart';
|
import 'package:PiliPlus/http/reply.dart';
|
||||||
import 'package:PiliPlus/utils/num_utils.dart';
|
import 'package:PiliPlus/utils/num_utils.dart';
|
||||||
|
import 'package:easy_debounce/easy_throttle.dart';
|
||||||
import 'package:fixnum/fixnum.dart' as $fixnum;
|
import 'package:fixnum/fixnum.dart' as $fixnum;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
@@ -117,12 +118,16 @@ class ZanButtonGrpc extends StatelessWidget {
|
|||||||
height: 32,
|
height: 32,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
style: style,
|
style: style,
|
||||||
onPressed: () => onHateReply(
|
onPressed: () => EasyThrottle.throttle(
|
||||||
context,
|
'interactAction',
|
||||||
isProcessing,
|
const Duration(milliseconds: 200),
|
||||||
() => isProcessing = false,
|
() => onHateReply(
|
||||||
isLike: isLike,
|
context,
|
||||||
isDislike: isDislike,
|
isProcessing,
|
||||||
|
() => isProcessing = false,
|
||||||
|
isLike: isLike,
|
||||||
|
isDislike: isDislike,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
isDislike
|
isDislike
|
||||||
@@ -138,12 +143,16 @@ class ZanButtonGrpc extends StatelessWidget {
|
|||||||
height: 32,
|
height: 32,
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
style: style,
|
style: style,
|
||||||
onPressed: () => onLikeReply(
|
onPressed: () => EasyThrottle.throttle(
|
||||||
context,
|
'interactAction',
|
||||||
isProcessing,
|
const Duration(milliseconds: 200),
|
||||||
() => isProcessing = false,
|
() => onLikeReply(
|
||||||
isLike: isLike,
|
context,
|
||||||
isDislike: isDislike,
|
isProcessing,
|
||||||
|
() => isProcessing = false,
|
||||||
|
isLike: isLike,
|
||||||
|
isDislike: isDislike,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
spacing: 4,
|
spacing: 4,
|
||||||
|
|||||||
Reference in New Issue
Block a user