opt follow tab

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-06-10 13:28:24 +08:00
parent 4c758bb1a3
commit bdf3cfc750
12 changed files with 52 additions and 38 deletions

View File

@@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/follow_order_type.dart';
import 'package:PiliPlus/models_new/follow/list.dart';
import 'package:PiliPlus/pages/follow/child_controller.dart';
import 'package:PiliPlus/pages/follow/child/child_controller.dart';
import 'package:PiliPlus/pages/follow/controller.dart';
import 'package:PiliPlus/pages/follow/widgets/follow_item.dart';
import 'package:PiliPlus/pages/share/view.dart' show UserModel;
@@ -15,12 +15,14 @@ import 'package:get/get.dart';
class FollowChildPage extends StatefulWidget {
const FollowChildPage({
super.key,
this.tag,
this.controller,
required this.mid,
this.tagid,
this.onSelect,
});
final String? tag;
final FollowController? controller;
final int mid;
final int? tagid;
@@ -33,8 +35,9 @@ class FollowChildPage extends StatefulWidget {
class _FollowChildPageState extends State<FollowChildPage>
with AutomaticKeepAliveClientMixin {
late final _followController = Get.put(
FollowChildController(widget.controller, widget.mid, widget.tagid),
tag: Utils.generateRandomString(8));
FollowChildController(widget.controller, widget.mid, widget.tagid),
tag: '${widget.tag ?? Utils.generateRandomString(8)}${widget.tagid}',
);
@override
Widget build(BuildContext context) {
@@ -62,6 +65,7 @@ class _FollowChildPageState extends State<FollowChildPage>
Widget get _child => refreshIndicator(
onRefresh: _followController.onRefresh,
child: CustomScrollView(
controller: _followController.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(

View File

@@ -3,7 +3,8 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/member/tags.dart';
import 'package:PiliPlus/pages/follow/child_view.dart';
import 'package:PiliPlus/pages/follow/child/child_controller.dart';
import 'package:PiliPlus/pages/follow/child/child_view.dart';
import 'package:PiliPlus/pages/follow/controller.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
@@ -18,10 +19,9 @@ class FollowPage extends StatefulWidget {
}
class _FollowPageState extends State<FollowPage> {
final FollowController _followController = Get.put(
FollowController(),
tag: Utils.generateRandomString(8),
);
final _tag = Utils.generateRandomString(8);
late final FollowController _followController =
Get.put(FollowController(), tag: _tag);
@override
Widget build(BuildContext context) {
@@ -69,11 +69,17 @@ class _FollowPageState extends State<FollowPage> {
),
body: _followController.isOwner
? Obx(() => _buildBody(_followController.followState.value))
: FollowChildPage(
controller: _followController, mid: _followController.mid),
: _childPage(),
);
}
Widget _childPage([MemberTagItemModel? item]) => FollowChildPage(
tag: _tag,
controller: _followController,
mid: _followController.mid,
tagid: item?.tagid,
);
bool _isCustomTag(int? tagid) {
return tagid != null && tagid != 0 && tagid != -10 && tagid != -2;
}
@@ -97,7 +103,11 @@ class _FollowPageState extends State<FollowPage> {
int? count = item.count;
if (_isCustomTag(item.tagid)) {
return GestureDetector(
onLongPress: () => _onHandleTag(index, item),
behavior: HitTestBehavior.translucent,
onLongPress: () {
Feedback.forLongPress(context);
_onHandleTag(index, item);
},
child: Tab(
child: Row(
children: [
@@ -117,9 +127,13 @@ class _FollowPageState extends State<FollowPage> {
onTap: (value) {
if (!_followController.tabController!.indexIsChanging) {
final item = _followController.tabs[value];
if (_isCustomTag(item.tagid)) {
_onHandleTag(value, item);
}
// if (_isCustomTag(item.tagid)) {
// _onHandleTag(value, item);
// }
try {
Get.find<FollowChildController>(tag: '$_tag${item.tagid}')
.animateToTop();
} catch (_) {}
}
},
),
@@ -129,24 +143,13 @@ class _FollowPageState extends State<FollowPage> {
color: Colors.transparent,
child: tabBarView(
controller: _followController.tabController,
children: _followController.tabs
.map(
(item) => FollowChildPage(
controller: _followController,
mid: _followController.mid,
tagid: item.tagid,
),
)
.toList(),
children: _followController.tabs.map(_childPage).toList(),
),
),
),
],
),
Error() => FollowChildPage(
controller: _followController,
mid: _followController.mid,
),
Error() => _childPage(),
};
}