Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-18 16:56:43 +08:00
parent f642bfcf48
commit ab80b2a5af
24 changed files with 876 additions and 871 deletions

View File

@@ -121,8 +121,12 @@ class _SearchTrendingPageState extends State<SearchTrendingPage> {
filterQuality: FilterQuality.low,
),
),
Obx(() =>
_buildBody(theme, _controller.loadingState.value)),
SliverPadding(
padding: EdgeInsets.only(
bottom: MediaQuery.paddingOf(context).bottom + 100),
sliver: Obx(() =>
_buildBody(theme, _controller.loadingState.value)),
),
],
),
),
@@ -138,77 +142,73 @@ class _SearchTrendingPageState extends State<SearchTrendingPage> {
return switch (loadingState) {
Loading() => const SliverToBoxAdapter(child: LinearProgressIndicator()),
Success(:var response) => response?.isNotEmpty == true
? SliverPadding(
padding: EdgeInsets.only(
bottom: MediaQuery.paddingOf(context).bottom + 100),
sliver: SliverList.separated(
itemCount: response!.length,
itemBuilder: (context, index) {
final item = response[index];
return ListTile(
dense: true,
onTap: () {
Get.toNamed(
'/searchResult',
parameters: {
'keyword': item.keyword!,
},
);
},
leading: index < _controller.topCount
? const Icon(
size: 17,
Icons.vertical_align_top_outlined,
color: Color(0xFFd1403e),
)
: Text(
'${index + 1 - _controller.topCount}',
style: TextStyle(
fontWeight: FontWeight.bold,
color: switch (index - _controller.topCount) {
0 => const Color(0xFFfdad13),
1 => const Color(0xFF8aace1),
2 => const Color(0xFFdfa777),
_ => theme.colorScheme.outline,
},
fontSize: 17,
fontStyle: FontStyle.italic,
),
),
title: Row(
children: [
Flexible(
child: Text(
item.keyword!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
strutStyle: const StrutStyle(height: 1, leading: 0),
style: const TextStyle(height: 1, fontSize: 15),
? SliverList.separated(
itemCount: response!.length,
itemBuilder: (context, index) {
final item = response[index];
return ListTile(
dense: true,
onTap: () {
Get.toNamed(
'/searchResult',
parameters: {
'keyword': item.keyword!,
},
);
},
leading: index < _controller.topCount
? const Icon(
size: 17,
Icons.vertical_align_top_outlined,
color: Color(0xFFd1403e),
)
: Text(
'${index + 1 - _controller.topCount}',
style: TextStyle(
fontWeight: FontWeight.bold,
color: switch (index - _controller.topCount) {
0 => const Color(0xFFfdad13),
1 => const Color(0xFF8aace1),
2 => const Color(0xFFdfa777),
_ => theme.colorScheme.outline,
},
fontSize: 17,
fontStyle: FontStyle.italic,
),
),
if (item.icon?.isNotEmpty == true) ...[
const SizedBox(width: 4),
CachedNetworkImage(
imageUrl: Utils.thumbnailImgUrl(item.icon!),
height: 16,
),
] else if (item.showLiveIcon == true) ...[
const SizedBox(width: 4),
Image.asset(
'assets/images/live/live.gif',
width: 51,
height: 16,
),
],
title: Row(
children: [
Flexible(
child: Text(
item.keyword!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
strutStyle: const StrutStyle(height: 1, leading: 0),
style: const TextStyle(height: 1, fontSize: 15),
),
),
if (item.icon?.isNotEmpty == true) ...[
const SizedBox(width: 4),
CachedNetworkImage(
imageUrl: Utils.thumbnailImgUrl(item.icon!),
height: 16,
),
] else if (item.showLiveIcon == true) ...[
const SizedBox(width: 4),
Image.asset(
'assets/images/live/live.gif',
width: 51,
height: 16,
),
],
),
);
},
separatorBuilder: (context, index) => Divider(
height: 1,
indent: 48,
color: theme.colorScheme.outline.withValues(alpha: 0.1),
),
],
),
);
},
separatorBuilder: (context, index) => Divider(
height: 1,
indent: 48,
color: theme.colorScheme.outline.withValues(alpha: 0.1),
),
)
: HttpError(