mirror of
https://github.com/wgh136/pixes.git
synced 2025-09-27 04:57:23 +00:00
improve ui
This commit is contained in:
@@ -161,7 +161,8 @@
|
||||
"Actions": "操作",
|
||||
"Current quantity": "当前数量",
|
||||
"Display the original image on the details page": "在详情页显示原图",
|
||||
"Open link": "打开链接"
|
||||
"Open link": "打开链接",
|
||||
"Read": "阅读"
|
||||
},
|
||||
"zh_TW": {
|
||||
"Search": "搜索",
|
||||
@@ -325,6 +326,7 @@
|
||||
"Actions": "操作",
|
||||
"Current quantity": "當前數量",
|
||||
"Display the original image on the details page": "在詳情頁顯示原圖",
|
||||
"Open link": "打開鏈接"
|
||||
"Open link": "打開鏈接",
|
||||
"Read": "閱讀"
|
||||
}
|
||||
}
|
@@ -59,48 +59,58 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
height: height,
|
||||
child: Stack(
|
||||
children: [
|
||||
Positioned.fill(child: Container(
|
||||
Positioned.fill(
|
||||
child: Container(
|
||||
width: width,
|
||||
height: height,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8.0),
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8.0),
|
||||
child: Card(
|
||||
padding: EdgeInsets.zero,
|
||||
margin: EdgeInsets.zero,
|
||||
child: GestureDetector(
|
||||
onTap: widget.onTap ?? (){
|
||||
context.to(() => IllustPage(widget.illust));
|
||||
},
|
||||
onTap: widget.onTap ??
|
||||
() {
|
||||
context.to(() => IllustPage(widget.illust));
|
||||
},
|
||||
onSecondaryTapUp: showMenu,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(4.0),
|
||||
child: AnimatedImage(
|
||||
image: CachedImageProvider(widget.illust.images.first.medium),
|
||||
image: CachedImageProvider(
|
||||
widget.illust.images.first.medium),
|
||||
fit: BoxFit.cover,
|
||||
width: width-16.0,
|
||||
height: height-16.0,
|
||||
width: width - 16.0,
|
||||
height: height - 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)),
|
||||
if(widget.illust.images.length > 1)
|
||||
if (widget.illust.images.length > 1)
|
||||
Positioned(
|
||||
top: 12,
|
||||
left: 12,
|
||||
child: Container(
|
||||
width: 28,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
color: FluentTheme.of(context).cardColor,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(color: ColorScheme.of(context).outlineVariant, width: 0.6),
|
||||
),
|
||||
child: Center(
|
||||
child: Text("${widget.illust.images.length}P",
|
||||
style: const TextStyle(fontSize: 12),),
|
||||
)),
|
||||
width: 28,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
color: FluentTheme.of(context)
|
||||
.micaBackgroundColor
|
||||
.withOpacity(0.72),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(
|
||||
color: ColorScheme.of(context).outlineVariant,
|
||||
width: 0.6),
|
||||
),
|
||||
child: Center(
|
||||
child: Text(
|
||||
"${widget.illust.images.length}P",
|
||||
style: const TextStyle(fontSize: 12),
|
||||
),
|
||||
)),
|
||||
),
|
||||
if(widget.illust.isAi)
|
||||
if (widget.illust.isAi)
|
||||
Positioned(
|
||||
bottom: 12,
|
||||
left: 12,
|
||||
@@ -108,16 +118,22 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
width: 28,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
color: ColorScheme.of(context).errorContainer.withOpacity(0.8),
|
||||
color: ColorScheme.of(context)
|
||||
.errorContainer
|
||||
.withOpacity(0.8),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(color: ColorScheme.of(context).outlineVariant, width: 0.6),
|
||||
border: Border.all(
|
||||
color: ColorScheme.of(context).outlineVariant,
|
||||
width: 0.6),
|
||||
),
|
||||
child: const Center(
|
||||
child: Text("AI",
|
||||
style: TextStyle(fontSize: 12),),
|
||||
child: Text(
|
||||
"AI",
|
||||
style: TextStyle(fontSize: 12),
|
||||
),
|
||||
)),
|
||||
),
|
||||
if(widget.illust.isUgoira)
|
||||
if (widget.illust.isUgoira)
|
||||
Positioned(
|
||||
bottom: 12,
|
||||
left: 12,
|
||||
@@ -125,16 +141,22 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
width: 28,
|
||||
height: 20,
|
||||
decoration: BoxDecoration(
|
||||
color: ColorScheme.of(context).primaryContainer.withOpacity(0.8),
|
||||
color: ColorScheme.of(context)
|
||||
.primaryContainer
|
||||
.withOpacity(0.8),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(color: ColorScheme.of(context).outlineVariant, width: 0.6),
|
||||
border: Border.all(
|
||||
color: ColorScheme.of(context).outlineVariant,
|
||||
width: 0.6),
|
||||
),
|
||||
child: const Center(
|
||||
child: Text("GIF",
|
||||
style: TextStyle(fontSize: 12),),
|
||||
child: Text(
|
||||
"GIF",
|
||||
style: TextStyle(fontSize: 12),
|
||||
),
|
||||
)),
|
||||
),
|
||||
if(widget.illust.isR18)
|
||||
if (widget.illust.isR18)
|
||||
Positioned(
|
||||
bottom: 12,
|
||||
right: 12,
|
||||
@@ -144,14 +166,18 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
decoration: BoxDecoration(
|
||||
color: ColorScheme.of(context).errorContainer,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(color: ColorScheme.of(context).outlineVariant, width: 0.6),
|
||||
border: Border.all(
|
||||
color: ColorScheme.of(context).outlineVariant,
|
||||
width: 0.6),
|
||||
),
|
||||
child: const Center(
|
||||
child: Text("R18",
|
||||
style: TextStyle(fontSize: 12),),
|
||||
child: Text(
|
||||
"R18",
|
||||
style: TextStyle(fontSize: 12),
|
||||
),
|
||||
)),
|
||||
),
|
||||
if(widget.illust.isR18G)
|
||||
if (widget.illust.isR18G)
|
||||
Positioned(
|
||||
bottom: 12,
|
||||
right: 12,
|
||||
@@ -161,11 +187,15 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
decoration: BoxDecoration(
|
||||
color: ColorScheme.of(context).errorContainer,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
border: Border.all(color: ColorScheme.of(context).outlineVariant, width: 0.6),
|
||||
border: Border.all(
|
||||
color: ColorScheme.of(context).outlineVariant,
|
||||
width: 0.6),
|
||||
),
|
||||
child: const Center(
|
||||
child: Text("R18G",
|
||||
style: TextStyle(fontSize: 12),),
|
||||
child: Text(
|
||||
"R18G",
|
||||
style: TextStyle(fontSize: 12),
|
||||
),
|
||||
)),
|
||||
),
|
||||
Positioned(
|
||||
@@ -196,31 +226,38 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
builder: (context) {
|
||||
return MenuFlyout(
|
||||
items: [
|
||||
MenuFlyoutItem(text: Text("View".tl), onPressed: (){
|
||||
context.to(() => IllustPage(widget.illust));
|
||||
}),
|
||||
MenuFlyoutItem(text: Text("Private Favorite".tl), onPressed: (){
|
||||
favorite("private");
|
||||
}),
|
||||
MenuFlyoutItem(text: Text("Download".tl), onPressed: (){
|
||||
context.showToast(message: "Added");
|
||||
DownloadManager().addDownloadingTask(widget.illust);
|
||||
}),
|
||||
MenuFlyoutItem(
|
||||
text: Text("View".tl),
|
||||
onPressed: () {
|
||||
context.to(() => IllustPage(widget.illust));
|
||||
}),
|
||||
MenuFlyoutItem(
|
||||
text: Text("Private Favorite".tl),
|
||||
onPressed: () {
|
||||
favorite("private");
|
||||
}),
|
||||
MenuFlyoutItem(
|
||||
text: Text("Download".tl),
|
||||
onPressed: () {
|
||||
context.showToast(message: "Added");
|
||||
DownloadManager().addDownloadingTask(widget.illust);
|
||||
}),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void favorite([String type = "public"]) async{
|
||||
if(isBookmarking) return;
|
||||
void favorite([String type = "public"]) async {
|
||||
if (isBookmarking) return;
|
||||
setState(() {
|
||||
isBookmarking = true;
|
||||
});
|
||||
var method = widget.illust.isBookmarked ? "delete" : "add";
|
||||
var res = await Network().addBookmark(widget.illust.id.toString(), method, type);
|
||||
if(res.error) {
|
||||
if(mounted) {
|
||||
var res =
|
||||
await Network().addBookmark(widget.illust.id.toString(), method, type);
|
||||
if (res.error) {
|
||||
if (mounted) {
|
||||
context.showToast(message: "Network Error");
|
||||
}
|
||||
} else {
|
||||
@@ -233,16 +270,18 @@ class _IllustWidgetState extends State<IllustWidget> {
|
||||
|
||||
Widget buildButton() {
|
||||
Widget child;
|
||||
if(isBookmarking) {
|
||||
if (isBookmarking) {
|
||||
child = const SizedBox(
|
||||
width: 14,
|
||||
height: 14,
|
||||
child: ProgressRing(strokeWidth: 1.6,),
|
||||
child: ProgressRing(
|
||||
strokeWidth: 1.6,
|
||||
),
|
||||
);
|
||||
} else if(widget.illust.isBookmarked) {
|
||||
} else if (widget.illust.isBookmarked) {
|
||||
child = Icon(
|
||||
MdIcons.favorite,
|
||||
color: ColorScheme.of(context).error,
|
||||
color: Colors.red,
|
||||
size: 22,
|
||||
);
|
||||
} else {
|
||||
|
@@ -328,11 +328,15 @@ class SideBarRoute<T> extends PopupRoute<T> {
|
||||
bottom: 0,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: FluentTheme.of(context).micaBackgroundColor.withOpacity(0.98),
|
||||
borderRadius: const BorderRadius.only(topLeft: Radius.circular(4), bottomLeft: Radius.circular(4))
|
||||
),
|
||||
constraints: BoxConstraints(maxWidth: min(_kSideBarWidth,
|
||||
MediaQuery.of(context).size.width)),
|
||||
color: FluentTheme.of(context)
|
||||
.micaBackgroundColor
|
||||
.withOpacity(0.98),
|
||||
borderRadius: const BorderRadius.only(
|
||||
topLeft: Radius.circular(4),
|
||||
bottomLeft: Radius.circular(4))),
|
||||
constraints: BoxConstraints(
|
||||
maxWidth:
|
||||
min(_kSideBarWidth, MediaQuery.of(context).size.width)),
|
||||
width: double.infinity,
|
||||
child: child,
|
||||
),
|
||||
|
@@ -136,7 +136,8 @@ class MyApp extends StatelessWidget {
|
||||
if (App.windowsVersion == 11) {
|
||||
flutter_acrylic.Window.setEffect(
|
||||
effect: flutter_acrylic.WindowEffect.mica,
|
||||
dark: false);
|
||||
dark: FluentTheme.of(context).brightness ==
|
||||
Brightness.dark);
|
||||
widget = NavigationPaneTheme(
|
||||
data: const NavigationPaneThemeData(
|
||||
backgroundColor: Colors.transparent,
|
||||
@@ -146,12 +147,13 @@ class MyApp extends StatelessWidget {
|
||||
} else if (App.windowsVersion == 10) {
|
||||
flutter_acrylic.Window.setEffect(
|
||||
effect: flutter_acrylic.WindowEffect.acrylic,
|
||||
dark: false);
|
||||
dark: FluentTheme.of(context).brightness ==
|
||||
Brightness.dark);
|
||||
widget = NavigationPaneTheme(
|
||||
data: NavigationPaneThemeData(
|
||||
backgroundColor: FluentTheme.of(context)
|
||||
.micaBackgroundColor
|
||||
.withOpacity(0.05),
|
||||
.withOpacity(0.72),
|
||||
),
|
||||
child: widget,
|
||||
);
|
||||
|
@@ -201,35 +201,37 @@ class _ImagePageState extends State<ImagePage> with WindowListener {
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
left: 0,
|
||||
top: height / 2 - 9,
|
||||
child: IconButton(
|
||||
icon: const Icon(
|
||||
FluentIcons.chevron_left,
|
||||
size: 18,
|
||||
),
|
||||
onPressed: () {
|
||||
controller.previousPage(
|
||||
duration: const Duration(milliseconds: 300),
|
||||
curve: Curves.easeInOut,
|
||||
);
|
||||
},
|
||||
).paddingAll(8),
|
||||
),
|
||||
Positioned(
|
||||
right: 0,
|
||||
top: height / 2 - 9,
|
||||
child: IconButton(
|
||||
icon: const Icon(FluentIcons.chevron_right, size: 18),
|
||||
onPressed: () {
|
||||
controller.nextPage(
|
||||
duration: const Duration(milliseconds: 300),
|
||||
curve: Curves.easeInOut,
|
||||
);
|
||||
},
|
||||
).paddingAll(8),
|
||||
),
|
||||
if (currentPage != 0)
|
||||
Positioned(
|
||||
left: 0,
|
||||
top: height / 2 - 9,
|
||||
child: IconButton(
|
||||
icon: const Icon(
|
||||
FluentIcons.chevron_left,
|
||||
size: 18,
|
||||
),
|
||||
onPressed: () {
|
||||
controller.previousPage(
|
||||
duration: const Duration(milliseconds: 300),
|
||||
curve: Curves.easeInOut,
|
||||
);
|
||||
},
|
||||
).paddingAll(8),
|
||||
),
|
||||
if (currentPage != widget.urls.length - 1)
|
||||
Positioned(
|
||||
right: 0,
|
||||
top: height / 2 - 9,
|
||||
child: IconButton(
|
||||
icon: const Icon(FluentIcons.chevron_right, size: 18),
|
||||
onPressed: () {
|
||||
controller.nextPage(
|
||||
duration: const Duration(milliseconds: 300),
|
||||
curve: Curves.easeInOut,
|
||||
);
|
||||
},
|
||||
).paddingAll(8),
|
||||
),
|
||||
Positioned(
|
||||
left: 12,
|
||||
bottom: 8,
|
||||
|
@@ -3,7 +3,6 @@ import "dart:async";
|
||||
import "package:fluent_ui/fluent_ui.dart";
|
||||
import "package:flutter/foundation.dart";
|
||||
import "package:pixes/appdata.dart";
|
||||
import "package:pixes/components/keyboard.dart";
|
||||
import "package:pixes/components/md.dart";
|
||||
import "package:pixes/foundation/app.dart";
|
||||
import "package:pixes/foundation/image_provider.dart";
|
||||
|
@@ -29,7 +29,7 @@ class _NovelReadingPageState extends LoadingState<NovelReadingPage, String> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
action = TitleBarAction(MdIcons.tune, "Settings", () {
|
||||
action = TitleBarAction(MdIcons.tune, "Settings".tl, () {
|
||||
if (!isShowingSettings) {
|
||||
_NovelReadingSettings.show(context, () {
|
||||
setState(() {});
|
||||
@@ -138,7 +138,8 @@ class _NovelReadingSettings extends StatefulWidget {
|
||||
final void Function() callback;
|
||||
|
||||
static Future show(BuildContext context, void Function() callback) {
|
||||
return Navigator.of(context).push(SideBarRoute(_NovelReadingSettings(callback)));
|
||||
return Navigator.of(context)
|
||||
.push(SideBarRoute(_NovelReadingSettings(callback)));
|
||||
}
|
||||
|
||||
@override
|
||||
|
Reference in New Issue
Block a user