mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-24 02:56:58 +08:00
opt mention
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:PiliPlus/common/widgets/custom_sliver_persistent_header_delegate.dart';
|
||||
import 'package:PiliPlus/common/widgets/draggable_sheet/draggable_scrollable_sheet_topic.dart'
|
||||
as topic_sheet;
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models_new/dynamic/dyn_mention/group.dart';
|
||||
@@ -162,19 +163,7 @@ class _DynMentionPanelState extends State<DynMentionPanel> {
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Obx(() => _buildBody(theme, _controller.loadingState.value)),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<MentionGroup>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => loadingWidget,
|
||||
Success<List<MentionGroup>?>(:var response) =>
|
||||
response?.isNotEmpty == true
|
||||
? NotificationListener<ScrollNotification>(
|
||||
child: NotificationListener<ScrollNotification>(
|
||||
onNotification: (notification) {
|
||||
if (notification is UserScrollNotification) {
|
||||
if (_controller.focusNode.hasFocus) {
|
||||
@@ -188,8 +177,34 @@ class _DynMentionPanelState extends State<DynMentionPanel> {
|
||||
child: CustomScrollView(
|
||||
controller: widget.scrollController,
|
||||
slivers: [
|
||||
...response!.map((group) {
|
||||
if (group.items!.isNullOrEmpty) {
|
||||
Obx(() => _buildBody(theme, _controller.loadingState.value)),
|
||||
SliverToBoxAdapter(
|
||||
child: SizedBox(
|
||||
height: MediaQuery.paddingOf(context).bottom +
|
||||
MediaQuery.viewInsetsOf(context).bottom +
|
||||
80,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<MentionGroup>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => SliverPadding(
|
||||
padding: const EdgeInsets.only(top: 8),
|
||||
sliver: linearLoading,
|
||||
),
|
||||
Success<List<MentionGroup>?>(:var response) =>
|
||||
response?.isNotEmpty == true
|
||||
? SliverMainAxisGroup(
|
||||
slivers: response!.map((group) {
|
||||
if (group.items.isNullOrEmpty) {
|
||||
return const SliverToBoxAdapter();
|
||||
}
|
||||
return SliverMainAxisGroup(
|
||||
@@ -202,8 +217,7 @@ class _DynMentionPanelState extends State<DynMentionPanel> {
|
||||
child: Container(
|
||||
height: 40,
|
||||
alignment: Alignment.centerLeft,
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Text(group.groupName!),
|
||||
),
|
||||
),
|
||||
@@ -219,25 +233,13 @@ class _DynMentionPanelState extends State<DynMentionPanel> {
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
SliverToBoxAdapter(
|
||||
child: SizedBox(
|
||||
height: MediaQuery.paddingOf(context).bottom +
|
||||
MediaQuery.viewInsetsOf(context).bottom +
|
||||
80,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
}).toList(),
|
||||
)
|
||||
: _errWidget(),
|
||||
Error(:var errMsg) => _errWidget(errMsg),
|
||||
: HttpError(onReload: _controller.onReload),
|
||||
Error(:var errMsg) => HttpError(
|
||||
errMsg: errMsg,
|
||||
onReload: _controller.onReload,
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
Widget _errWidget([String? errMsg]) => scrollErrorWidget(
|
||||
errMsg: errMsg,
|
||||
controller: widget.scrollController,
|
||||
onReload: _controller.onReload,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -160,18 +160,7 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Obx(() => _buildBody(theme, _controller.loadingState.value)),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<TopicItem>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => loadingWidget,
|
||||
Success<List<TopicItem>?>(:var response) => response?.isNotEmpty == true
|
||||
? NotificationListener<ScrollNotification>(
|
||||
child: NotificationListener<ScrollNotification>(
|
||||
onNotification: (notification) {
|
||||
if (notification is UserScrollNotification) {
|
||||
if (_controller.focusNode.hasFocus) {
|
||||
@@ -182,7 +171,19 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
}
|
||||
return false;
|
||||
},
|
||||
child: ListView.builder(
|
||||
child: Obx(() => _buildBody(theme, _controller.loadingState.value)),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<TopicItem>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => loadingWidget,
|
||||
Success<List<TopicItem>?>(:var response) => response?.isNotEmpty == true
|
||||
? ListView.builder(
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.paddingOf(context).bottom +
|
||||
MediaQuery.viewInsetsOf(context).bottom +
|
||||
@@ -199,7 +200,6 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
);
|
||||
},
|
||||
itemCount: response!.length,
|
||||
),
|
||||
)
|
||||
: _errWidget(),
|
||||
Error(:var errMsg) => _errWidget(errMsg),
|
||||
|
||||
@@ -255,7 +255,7 @@ class LiveRoomController extends GetxController {
|
||||
}
|
||||
|
||||
void initDm(LiveDmInfoData info) {
|
||||
if (info.hostList!.isNullOrEmpty) {
|
||||
if (info.hostList.isNullOrEmpty) {
|
||||
return;
|
||||
}
|
||||
msgStream = LiveMessageStream(
|
||||
|
||||
@@ -143,7 +143,7 @@ class _PgcPageState extends CommonPageState<PgcPage, PgcController>
|
||||
child: TabBarView(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
children: response.map((item) {
|
||||
if (item.episodes!.isNullOrEmpty) {
|
||||
if (item.episodes.isNullOrEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return ListView.builder(
|
||||
|
||||
Reference in New Issue
Block a user