💄 Optimized settings screen
This commit is contained in:
@@ -449,12 +449,20 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
|
|
||||||
// Card background opacity settings
|
// Card background opacity settings
|
||||||
ListTile(
|
ListTile(
|
||||||
|
isThreeLine: true,
|
||||||
minLeadingWidth: 48,
|
minLeadingWidth: 48,
|
||||||
title: Text('settingsCardBackgroundOpacity').tr(),
|
title: Text('settingsCardBackgroundOpacity').tr(),
|
||||||
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
||||||
leading: const Icon(Symbols.opacity),
|
leading: const Icon(Symbols.opacity),
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
padding: const EdgeInsets.only(top: 8),
|
padding: const EdgeInsets.only(top: 8),
|
||||||
|
child: SliderTheme(
|
||||||
|
data: SliderThemeData(
|
||||||
|
trackHeight: 2,
|
||||||
|
thumbShape: const RoundSliderThumbShape(enabledThumbRadius: 8),
|
||||||
|
overlayShape: const RoundSliderOverlayShape(overlayRadius: 24),
|
||||||
|
trackShape: RoundedRectSliderTrackShape(),
|
||||||
|
),
|
||||||
child: Slider(
|
child: Slider(
|
||||||
value: settings.cardTransparency,
|
value: settings.cardTransparency,
|
||||||
min: 0.0,
|
min: 0.0,
|
||||||
@@ -470,6 +478,7 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
|
||||||
// Background image settings (only for non-web platforms)
|
// Background image settings (only for non-web platforms)
|
||||||
if (!kIsWeb && docBasepath.value != null)
|
if (!kIsWeb && docBasepath.value != null)
|
||||||
@@ -512,7 +521,7 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
minLeadingWidth: 48,
|
minLeadingWidth: 48,
|
||||||
title: Text('settingsBackgroundImageEnable').tr(),
|
title: Text('settingsBackgroundImageEnable').tr(),
|
||||||
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
||||||
leading: const Icon(Symbols.image),
|
leading: const Icon(Symbols.hide_image),
|
||||||
trailing: Switch(
|
trailing: Switch(
|
||||||
value: settings.showBackgroundImage,
|
value: settings.showBackgroundImage,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
@@ -821,8 +830,20 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
title: Text('settingsWindowOpacity').tr(),
|
title: Text('settingsWindowOpacity').tr(),
|
||||||
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
contentPadding: const EdgeInsets.only(left: 24, right: 17),
|
||||||
leading: const Icon(Symbols.opacity),
|
leading: const Icon(Symbols.opacity),
|
||||||
|
isThreeLine: true,
|
||||||
subtitle: Padding(
|
subtitle: Padding(
|
||||||
padding: const EdgeInsets.only(top: 8),
|
padding: const EdgeInsets.only(top: 8),
|
||||||
|
child: SliderTheme(
|
||||||
|
data: SliderThemeData(
|
||||||
|
trackHeight: 2,
|
||||||
|
thumbShape: const RoundSliderThumbShape(
|
||||||
|
enabledThumbRadius: 8,
|
||||||
|
),
|
||||||
|
overlayShape: const RoundSliderOverlayShape(
|
||||||
|
overlayRadius: 24,
|
||||||
|
),
|
||||||
|
trackShape: RoundedRectSliderTrackShape(),
|
||||||
|
),
|
||||||
child: Slider(
|
child: Slider(
|
||||||
value: settings.windowOpacity,
|
value: settings.windowOpacity,
|
||||||
min: 0.1,
|
min: 0.1,
|
||||||
@@ -838,17 +859,22 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
// Create a responsive layout based on screen width
|
// Create a responsive layout based on screen width
|
||||||
Widget buildSettingsList() {
|
Widget buildSettingsList() {
|
||||||
if (isWide) {
|
if (isWide) {
|
||||||
// Two-column layout for wide screens
|
// Two-column layout for wide screens
|
||||||
return Row(
|
return ConstrainedBox(
|
||||||
|
constraints: const BoxConstraints(maxWidth: 920),
|
||||||
|
child: Row(
|
||||||
|
spacing: 16,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
spacing: 16,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
_SettingsSection(
|
_SettingsSection(
|
||||||
@@ -864,6 +890,7 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
spacing: 16,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
_SettingsSection(
|
_SettingsSection(
|
||||||
@@ -879,10 +906,12 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
).padding(horizontal: 16),
|
||||||
|
).center();
|
||||||
} else {
|
} else {
|
||||||
// Single column layout for narrow screens
|
// Single column layout for narrow screens
|
||||||
return Column(
|
return Column(
|
||||||
|
spacing: 16,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
_SettingsSection(
|
_SettingsSection(
|
||||||
@@ -903,7 +932,7 @@ class SettingsScreen extends HookConsumerWidget {
|
|||||||
children: desktopSettings,
|
children: desktopSettings,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
).padding(horizontal: 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -940,7 +969,9 @@ class _SettingsSection extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(
|
return Card(
|
||||||
|
margin: EdgeInsets.zero,
|
||||||
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
@@ -956,6 +987,7 @@ class _SettingsSection extends StatelessWidget {
|
|||||||
...children,
|
...children,
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
],
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user