opt: pages

Closes #644

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-09 00:22:33 +08:00
parent 850e5a199e
commit 03830533eb
12 changed files with 203 additions and 348 deletions

View File

@@ -0,0 +1,49 @@
import 'dart:async';
import 'package:PiliPlus/pages/common/common_controller.dart';
import 'package:PiliPlus/pages/home/controller.dart';
import 'package:PiliPlus/pages/main/controller.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:get/get.dart';
abstract class CommonPage extends StatefulWidget {
const CommonPage({super.key});
}
abstract class CommonPageState<T extends CommonPage, R extends CommonController>
extends State<T> {
R get controller;
StreamController<bool>? mainStream;
StreamController<bool>? searchBarStream;
@override
void initState() {
super.initState();
try {
mainStream = Get.find<MainController>().bottomBarStream;
searchBarStream = Get.find<HomeController>().searchBarStream;
} catch (_) {}
if (mainStream != null || searchBarStream != null) {
controller.scrollController.addListener(listener);
}
}
void listener() {
final ScrollDirection direction =
controller.scrollController.position.userScrollDirection;
if (direction == ScrollDirection.forward) {
mainStream?.add(true);
searchBarStream?.add(true);
} else if (direction == ScrollDirection.reverse) {
mainStream?.add(false);
searchBarStream?.add(false);
}
}
@override
void dispose() {
controller.scrollController.removeListener(listener);
super.dispose();
}
}