theme and language

This commit is contained in:
wgh19
2024-05-16 15:17:45 +08:00
parent 6e7e029a0d
commit 8c57dd30fb
7 changed files with 111 additions and 10 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/services.dart';
import 'package:photo_view/photo_view_gallery.dart';
import 'package:pixes/components/grid.dart';
import 'package:pixes/components/md.dart';
@@ -266,11 +267,13 @@ class _DownloadedIllustViewPageState extends State<_DownloadedIllustViewPage> wi
@override
Widget build(BuildContext context) {
return ScaffoldPage(
return Container(
padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top),
content: Listener(
color: FluentTheme.of(context).micaBackgroundColor,
child: Listener(
onPointerSignal: (event) {
if(event is PointerScrollEvent) {
if(event is PointerScrollEvent &&
!HardwareKeyboard.instance.isControlPressed) {
if(event.scrollDelta.dy > 0
&& controller.page!.toInt() < widget.imagePaths.length - 1) {
controller.jumpToPage(controller.page!.toInt() + 1);
@@ -286,8 +289,8 @@ class _DownloadedIllustViewPageState extends State<_DownloadedIllustViewPage> wi
children: [
Positioned.fill(child: PhotoViewGallery.builder(
pageController: controller,
backgroundDecoration: BoxDecoration(
color: FluentTheme.of(context).micaBackgroundColor
backgroundDecoration: const BoxDecoration(
color: Colors.transparent
),
itemCount: widget.imagePaths.length,
builder: (context, index) {

View File

@@ -35,6 +35,8 @@ class _SettingsPageState extends State<SettingsPage> {
buildBrowse(),
buildHeader("Download".tl),
buildDownload(),
buildHeader("Appearance".tl),
buildAppearance(),
buildHeader("About".tl),
buildAbout(),
SliverPadding(
@@ -221,6 +223,76 @@ class _SettingsPageState extends State<SettingsPage> {
),
);
}
Widget buildAppearance() {
return SliverToBoxAdapter(
child: Column(
children: [
buildItem(
title: "Theme".tl,
action: DropDownButton(
title: Text(appdata.settings["theme"] ?? "System".tl),
items: [
MenuFlyoutItem(text: Text("System".tl), onPressed: () {
setState(() {
appdata.settings["theme"] = "System";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
MenuFlyoutItem(text: Text("light".tl), onPressed: () {
setState(() {
appdata.settings["theme"] = "Light";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
MenuFlyoutItem(text: Text("dark".tl), onPressed: () {
setState(() {
appdata.settings["theme"] = "Dark";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
])),
buildItem(
title: "Language".tl,
action: DropDownButton(
title: Text(appdata.settings["language"] ?? "System"),
items: [
MenuFlyoutItem(text: const Text("System"), onPressed: () {
setState(() {
appdata.settings["language"] = "System";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
MenuFlyoutItem(text: const Text("English"), onPressed: () {
setState(() {
appdata.settings["language"] = "English";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
MenuFlyoutItem(text: const Text("简体中文"), onPressed: () {
setState(() {
appdata.settings["language"] = "简体中文";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
MenuFlyoutItem(text: const Text("繁體中文"), onPressed: () {
setState(() {
appdata.settings["language"] = "繁體中文";
});
appdata.writeData();
StateController.findOrNull(tag: "MyApp")?.update();
}),
])),
],
),
);
}
}
class _SetSingleFieldPage extends StatefulWidget {