* opt: cache

* opt: MediaListPanel

* feat: nested replyreply panel

* tweaks

* opt: abstract class

* opt: PageStorageKey

* opt: contextExt

* opt: EpisodePanel

* opt

* opt: context instead GlobalKey

* feat: jump to reply

* refa: reply_reply

* fix: jump

* fix: index

* update

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* opt: keepalive

* reapply: nested replyreply

* mod: spacing

* opt: CommonSlidePageState

* fix drag bottomsheet

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* opt reply jump

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* opt reply2reply

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* tweaks

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* tweaks

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* reapply: jumpToReply

* fix: padding

* fix: anim

* fix some panels

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* opt: implements Scaffold

* opt: remove keepalive

* revert: GlobalKey

* tweaks

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

---------

Co-authored-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
My-Responsitories
2025-09-15 18:45:28 +08:00
committed by GitHub
parent b9a55ccbce
commit 37fb63c3b1
75 changed files with 6300 additions and 1140 deletions

View File

@@ -11,7 +11,7 @@ import 'package:PiliPlus/utils/app_scheme.dart';
import 'package:floating/floating.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:get/get.dart' hide ContextExtensionss;
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
extension ImageExtension on num? {
@@ -29,14 +29,19 @@ extension IntExt on int? {
}
extension ScrollControllerExt on ScrollController {
void animToTop() {
void animToTop() => animTo(0);
void animTo(
double offset, {
Duration duration = const Duration(milliseconds: 500),
}) {
if (!hasClients) return;
if (offset >= Get.mediaQuery.size.height * 7) {
jumpTo(0);
if ((offset - this.offset).abs() >= position.viewportDimension * 7) {
jumpTo(offset);
} else {
animateTo(
0,
duration: const Duration(milliseconds: 500),
offset,
duration: duration,
curve: Curves.easeInOut,
);
}
@@ -227,9 +232,9 @@ extension ThreeDotItemTypeExt on ThreeDotItemType {
}
extension FileExt on File {
void tryDel({bool recursive = false}) {
Future<void> tryDel({bool recursive = false}) async {
try {
delete(recursive: recursive);
await delete(recursive: recursive);
} catch (_) {}
}
}