opt player keyboard event

opt triple

opt desktop pip

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-09-21 12:43:07 +08:00
parent 787be7ac11
commit 9f715ddd5b
8 changed files with 123 additions and 101 deletions

View File

@@ -1,15 +1,26 @@
import 'dart:async';
import 'dart:math' show pi;
import 'package:PiliPlus/pages/common/common_intro_controller.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
abstract class TripleState<T extends StatefulWidget> extends State<T>
with SingleTickerProviderStateMixin {
CommonIntroController get introController;
mixin TripleMixin on GetxController, TickerProvider {
//
final RxBool hasLike = false.obs;
//
final RxNum coinNum = RxNum(0);
//
bool get hasCoin => coinNum.value != 0;
//
final RxBool hasFav = false.obs;
bool get hasTriple => hasLike.value && hasCoin && hasFav.value;
void actionTriple();
Future<void> actionLikeVideo();
// no need for pugv
AnimationController? _tripleAnimCtr;
@@ -34,13 +45,6 @@ abstract class TripleState<T extends StatefulWidget> extends State<T>
_timer = null;
}
@override
void dispose() {
_cancelTimer();
_tripleAnimCtr?.dispose();
super.dispose();
}
static final _duration = Utils.isMobile
? const Duration(milliseconds: 200)
: const Duration(milliseconds: 230);
@@ -48,12 +52,12 @@ abstract class TripleState<T extends StatefulWidget> extends State<T>
void onStartTriple() {
_timer ??= Timer(_duration, () {
HapticFeedback.lightImpact();
if (introController.hasTriple) {
if (hasTriple) {
SmartDialog.showToast('已完成三连');
} else {
tripleAnimCtr.forward().whenComplete(() {
tripleAnimCtr.reset();
introController.actionTriple();
actionTriple();
});
}
_cancelTimer();
@@ -66,8 +70,15 @@ abstract class TripleState<T extends StatefulWidget> extends State<T>
} else if (_timer != null && _timer!.tick == 0) {
_cancelTimer();
if (isTapUp) {
introController.actionLikeVideo();
actionLikeVideo();
}
}
}
@override
void onClose() {
_cancelTimer();
_tripleAnimCtr?.dispose();
super.onClose();
}
}