mirror of
https://github.com/wanghongenpin/proxypin.git
synced 2026-03-29 06:59:46 +08:00
78 lines
2.9 KiB
Dart
78 lines
2.9 KiB
Dart
/*
|
|
* Copyright 2023 Hongen Wang
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* https://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import 'package:flutter/material.dart';
|
|
import 'package:proxypin/l10n/app_localizations.dart';
|
|
import 'package:proxypin/ui/configuration.dart';
|
|
|
|
class MobileThemeSetting extends StatelessWidget {
|
|
final AppConfiguration appConfiguration;
|
|
|
|
const MobileThemeSetting({super.key, required this.appConfiguration});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
AppLocalizations localizations = AppLocalizations.of(context)!;
|
|
|
|
return PopupMenuButton(
|
|
tooltip: appConfiguration.themeMode.name,
|
|
surfaceTintColor: Theme.of(context).colorScheme.onPrimary,
|
|
offset: const Offset(150, 0),
|
|
itemBuilder: (BuildContext context) {
|
|
return [
|
|
PopupMenuItem(
|
|
child: Tooltip(
|
|
preferBelow: false,
|
|
message: localizations.material3,
|
|
child: SwitchListTile(
|
|
value: appConfiguration.useMaterial3,
|
|
onChanged: (bool value) {
|
|
appConfiguration.useMaterial3 = value;
|
|
Navigator.of(context).pop();
|
|
},
|
|
dense: true,
|
|
title: const Text("Material3"),
|
|
))),
|
|
PopupMenuItem(
|
|
child:
|
|
ListTile(trailing: const Icon(Icons.cached), dense: true, title: Text(localizations.followSystem)),
|
|
onTap: () => appConfiguration.themeMode = ThemeMode.system),
|
|
PopupMenuItem(
|
|
child: ListTile(trailing: const Icon(Icons.sunny), dense: true, title: Text(localizations.themeLight)),
|
|
onTap: () => appConfiguration.themeMode = ThemeMode.light),
|
|
PopupMenuItem(
|
|
child: ListTile(
|
|
trailing: const Icon(Icons.nightlight_outlined), dense: true, title: Text(localizations.themeDark)),
|
|
onTap: () => appConfiguration.themeMode = ThemeMode.dark),
|
|
];
|
|
},
|
|
child: ListTile(
|
|
title: Text(localizations.theme),
|
|
trailing: getIcon(),
|
|
));
|
|
}
|
|
|
|
Icon getIcon() {
|
|
switch (appConfiguration.themeMode) {
|
|
case ThemeMode.system:
|
|
return const Icon(Icons.cached);
|
|
case ThemeMode.dark:
|
|
return const Icon(Icons.nightlight_outlined);
|
|
case ThemeMode.light:
|
|
return const Icon(Icons.sunny);
|
|
}
|
|
}
|
|
}
|