mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: icon
This commit is contained in:
@@ -130,7 +130,7 @@ class VideoCardH extends StatelessWidget {
|
|||||||
if (source == 'normal')
|
if (source == 'normal')
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 0,
|
bottom: 0,
|
||||||
right: 10,
|
right: 0,
|
||||||
child: VideoPopupMenu(
|
child: VideoPopupMenu(
|
||||||
size: 29,
|
size: 29,
|
||||||
iconSize: 17,
|
iconSize: 17,
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ class _AboutPageState extends State<AboutPage> {
|
|||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return SimpleDialog(
|
return SimpleDialog(
|
||||||
|
clipBehavior: Clip.hardEdge,
|
||||||
title: const Text('导入/导出设置'),
|
title: const Text('导入/导出设置'),
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
ListTile(
|
||||||
|
|||||||
@@ -67,11 +67,7 @@ class _FavSearchPageState extends State<FavSearchPage> {
|
|||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
tooltip: '清空',
|
tooltip: '清空',
|
||||||
icon: Icon(
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
Icons.clear,
|
|
||||||
size: 22,
|
|
||||||
color: Theme.of(context).colorScheme.outline,
|
|
||||||
),
|
|
||||||
onPressed: () => _favSearchCtr.onClear(),
|
onPressed: () => _favSearchCtr.onClear(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class _FollowSearchPageState extends State<FollowSearchPage> {
|
|||||||
IconButton(
|
IconButton(
|
||||||
tooltip: '搜索',
|
tooltip: '搜索',
|
||||||
onPressed: reRequest,
|
onPressed: reRequest,
|
||||||
icon: const Icon(CupertinoIcons.search, size: 22),
|
icon: const Icon(Icons.search, size: 22),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
],
|
],
|
||||||
@@ -67,11 +67,7 @@ class _FollowSearchPageState extends State<FollowSearchPage> {
|
|||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
tooltip: '清空',
|
tooltip: '清空',
|
||||||
icon: Icon(
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
Icons.clear,
|
|
||||||
size: 22,
|
|
||||||
color: Theme.of(context).colorScheme.outline,
|
|
||||||
),
|
|
||||||
onPressed: () => _followSearchController.onClear(),
|
onPressed: () => _followSearchController.onClear(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -66,11 +66,7 @@ class _HistorySearchPageState extends State<HistorySearchPage> {
|
|||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
tooltip: '清空',
|
tooltip: '清空',
|
||||||
icon: Icon(
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
Icons.clear,
|
|
||||||
size: 22,
|
|
||||||
color: Theme.of(context).colorScheme.outline,
|
|
||||||
),
|
|
||||||
onPressed: () => _historySearchCtr.onClear(),
|
onPressed: () => _historySearchCtr.onClear(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
|
|||||||
slivers: [
|
slivers: [
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
// 单列布局 EdgeInsets.zero
|
// 单列布局 EdgeInsets.zero
|
||||||
padding: const EdgeInsets.fromLTRB(
|
padding: const EdgeInsets.fromLTRB(StyleString.safeSpace,
|
||||||
StyleString.safeSpace, StyleString.safeSpace - 5, 0, 0),
|
StyleString.safeSpace - 5, StyleString.safeSpace, 0),
|
||||||
sliver: FutureBuilder(
|
sliver: FutureBuilder(
|
||||||
future: _futureBuilderFuture,
|
future: _futureBuilderFuture,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
|
|||||||
@@ -429,7 +429,7 @@ class _MemberPageState extends State<MemberPage>
|
|||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
height: 1,
|
height: 1,
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
color: Theme.of(context).colorScheme.onSecondaryContainer,
|
color: Theme.of(context).colorScheme.onSecondaryContainer,
|
||||||
),
|
),
|
||||||
strutStyle: const StrutStyle(
|
strutStyle: const StrutStyle(
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class _MemberSearchPageState extends State<MemberSearchPage>
|
|||||||
IconButton(
|
IconButton(
|
||||||
tooltip: '搜索',
|
tooltip: '搜索',
|
||||||
onPressed: () => _memberSearchCtr.submit(),
|
onPressed: () => _memberSearchCtr.submit(),
|
||||||
icon: const Icon(CupertinoIcons.search, size: 22)),
|
icon: const Icon(Icons.search, size: 22)),
|
||||||
const SizedBox(width: 10)
|
const SizedBox(width: 10)
|
||||||
],
|
],
|
||||||
title: Obx(
|
title: Obx(
|
||||||
@@ -71,11 +71,7 @@ class _MemberSearchPageState extends State<MemberSearchPage>
|
|||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
tooltip: '清空',
|
tooltip: '清空',
|
||||||
icon: Icon(
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
Icons.clear,
|
|
||||||
size: 22,
|
|
||||||
color: Theme.of(context).colorScheme.outline,
|
|
||||||
),
|
|
||||||
onPressed: () => _memberSearchCtr.onClear(),
|
onPressed: () => _memberSearchCtr.onClear(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class SSearchController extends GetxController {
|
|||||||
searchKeyWord.value = hintText;
|
searchKeyWord.value = hintText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
historyCacheList = List<String>.from(historyWord.get('cacheList')??[]);
|
historyCacheList = List<String>.from(historyWord.get('cacheList') ?? []);
|
||||||
historyList.value = historyCacheList;
|
historyList.value = historyCacheList;
|
||||||
enableHotKey = setting.get(SettingBoxKey.enableHotKey, defaultValue: true);
|
enableHotKey = setting.get(SettingBoxKey.enableHotKey, defaultValue: true);
|
||||||
}
|
}
|
||||||
@@ -55,6 +55,7 @@ class SSearchController extends GetxController {
|
|||||||
controller.value.clear();
|
controller.value.clear();
|
||||||
searchKeyWord.value = '';
|
searchKeyWord.value = '';
|
||||||
searchSuggestList.value = [];
|
searchSuggestList.value = [];
|
||||||
|
searchFocusNode.requestFocus();
|
||||||
} else {
|
} else {
|
||||||
Get.back();
|
Get.back();
|
||||||
}
|
}
|
||||||
@@ -64,12 +65,13 @@ class SSearchController extends GetxController {
|
|||||||
void submit() {
|
void submit() {
|
||||||
// ignore: unrelated_type_equality_checks
|
// ignore: unrelated_type_equality_checks
|
||||||
if (searchKeyWord == '') {
|
if (searchKeyWord == '') {
|
||||||
if (hintText == ''){
|
if (hintText == '') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
searchKeyWord.value = hintText;
|
searchKeyWord.value = hintText;
|
||||||
}
|
}
|
||||||
List<String> arr = historyCacheList.where((e) => e != searchKeyWord.value).toList();
|
List<String> arr =
|
||||||
|
historyCacheList.where((e) => e != searchKeyWord.value).toList();
|
||||||
arr.insert(0, searchKeyWord.value);
|
arr.insert(0, searchKeyWord.value);
|
||||||
historyCacheList = arr;
|
historyCacheList = arr;
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class _SearchPageState extends State<SearchPage> with RouteAware {
|
|||||||
IconButton(
|
IconButton(
|
||||||
tooltip: '搜索',
|
tooltip: '搜索',
|
||||||
onPressed: () => _searchController.submit(),
|
onPressed: () => _searchController.submit(),
|
||||||
icon: const Icon(CupertinoIcons.search, size: 22),
|
icon: const Icon(Icons.search, size: 22),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 10)
|
const SizedBox(width: 10)
|
||||||
],
|
],
|
||||||
@@ -71,11 +71,7 @@ class _SearchPageState extends State<SearchPage> with RouteAware {
|
|||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
tooltip: '清空',
|
tooltip: '清空',
|
||||||
icon: Icon(
|
icon: const Icon(Icons.clear, size: 22),
|
||||||
Icons.clear,
|
|
||||||
size: 22,
|
|
||||||
color: Theme.of(context).colorScheme.outline,
|
|
||||||
),
|
|
||||||
onPressed: () => _searchController.onClear(),
|
onPressed: () => _searchController.onClear(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Widget searchArticlePanel(BuildContext context, ctr, list) {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: i['text'],
|
text: i['text'],
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w400,
|
||||||
letterSpacing: 0.3,
|
letterSpacing: 0.3,
|
||||||
color: i['type'] == 'em'
|
color: i['type'] == 'em'
|
||||||
? Theme.of(context)
|
? Theme.of(context)
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class LiveContent extends StatelessWidget {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: i['text'],
|
text: i['text'],
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w400,
|
||||||
letterSpacing: 0.3,
|
letterSpacing: 0.3,
|
||||||
color: i['type'] == 'em'
|
color: i['type'] == 'em'
|
||||||
? Theme.of(context).colorScheme.primary
|
? Theme.of(context).colorScheme.primary
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
import 'dart:ffi';
|
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
@@ -8,7 +5,6 @@ import 'package:get/get.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:PiliPalaX/common/constants.dart';
|
import 'package:PiliPalaX/common/constants.dart';
|
||||||
import 'package:PiliPalaX/common/widgets/http_error.dart';
|
|
||||||
import 'package:PiliPalaX/pages/mine/controller.dart';
|
import 'package:PiliPalaX/pages/mine/controller.dart';
|
||||||
import 'package:PiliPalaX/pages/video/detail/index.dart';
|
import 'package:PiliPalaX/pages/video/detail/index.dart';
|
||||||
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
||||||
@@ -303,7 +299,7 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
|
|||||||
// : videoItem['title'] ?? "",
|
// : videoItem['title'] ?? "",
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
@@ -459,9 +455,7 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
|
|||||||
() => TextButton(
|
() => TextButton(
|
||||||
onPressed: () => videoIntroController.actionRelationMod(context),
|
onPressed: () => videoIntroController.actionRelationMod(context),
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
visualDensity: VisualDensity.compact,
|
visualDensity: const VisualDensity(horizontal: -2, vertical: -3),
|
||||||
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
|
||||||
padding: const EdgeInsets.only(left: 6, right: 6),
|
|
||||||
foregroundColor:
|
foregroundColor:
|
||||||
(videoIntroController.followStatus['attribute'] ?? 0) != 0
|
(videoIntroController.followStatus['attribute'] ?? 0) != 0
|
||||||
? t.colorScheme.outline
|
? t.colorScheme.outline
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class IntroDetail extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
color: Theme.of(context).colorScheme.background,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
padding: const EdgeInsets.only(left: 14, right: 14),
|
padding: const EdgeInsets.only(left: 14, right: 14),
|
||||||
height: Utils.getSheetHeight(context),
|
height: Utils.getSheetHeight(context),
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -47,7 +47,7 @@ class IntroDetail extends StatelessWidget {
|
|||||||
videoDetail!.title,
|
videoDetail!.title,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 6),
|
const SizedBox(height: 6),
|
||||||
|
|||||||
@@ -85,10 +85,12 @@ class _RelatedVideoPanelState extends State<RelatedVideoPanel>
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// 请求错误
|
// 请求错误
|
||||||
return HttpError(errMsg: '出错了', fn: () {
|
return HttpError(
|
||||||
_futureBuilder = _relatedController.queryRelatedVideo();
|
errMsg: '出错了',
|
||||||
_futureBuilder.then((value) => setState(() {}));
|
fn: () {
|
||||||
});
|
_futureBuilder = _relatedController.queryRelatedVideo();
|
||||||
|
_futureBuilder.then((value) => setState(() {}));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 骨架屏
|
// 骨架屏
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:PiliPalaX/common/constants.dart';
|
||||||
import 'package:PiliPalaX/utils/extension.dart';
|
import 'package:PiliPalaX/utils/extension.dart';
|
||||||
import 'package:auto_orientation/auto_orientation.dart';
|
import 'package:auto_orientation/auto_orientation.dart';
|
||||||
import 'package:floating/floating.dart';
|
import 'package:floating/floating.dart';
|
||||||
@@ -715,12 +716,18 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
videoDetailController.cid.value)),
|
videoDetailController.cid.value)),
|
||||||
],
|
],
|
||||||
SliverToBoxAdapter(
|
SliverToBoxAdapter(
|
||||||
child: Divider(
|
child: Padding(
|
||||||
indent: 12,
|
padding: const EdgeInsets.only(
|
||||||
endIndent: 12,
|
top: StyleString.safeSpace,
|
||||||
color: Theme.of(context)
|
),
|
||||||
.dividerColor
|
child: Divider(
|
||||||
.withOpacity(0.06),
|
height: 1,
|
||||||
|
indent: 12,
|
||||||
|
endIndent: 12,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.dividerColor
|
||||||
|
.withOpacity(0.06),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
RelatedVideoPanel(heroTag: heroTag),
|
RelatedVideoPanel(heroTag: heroTag),
|
||||||
@@ -817,10 +824,16 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
cid: videoDetailController.cid.value)),
|
cid: videoDetailController.cid.value)),
|
||||||
],
|
],
|
||||||
SliverToBoxAdapter(
|
SliverToBoxAdapter(
|
||||||
child: Divider(
|
child: Padding(
|
||||||
indent: 12,
|
padding:
|
||||||
endIndent: 12,
|
const EdgeInsets.only(top: StyleString.safeSpace),
|
||||||
color: Theme.of(context).dividerColor.withOpacity(0.06),
|
child: Divider(
|
||||||
|
height: 1,
|
||||||
|
indent: 12,
|
||||||
|
endIndent: 12,
|
||||||
|
color:
|
||||||
|
Theme.of(context).dividerColor.withOpacity(0.06),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
RelatedVideoPanel(heroTag: heroTag),
|
RelatedVideoPanel(heroTag: heroTag),
|
||||||
|
|||||||
Reference in New Issue
Block a user