1
0
forked from baron/baron-sso

다크 모드 전역 상태와 테마 기반 추가

This commit is contained in:
2026-04-08 16:14:50 +09:00
parent 873d56e35f
commit 332b657add
6 changed files with 246 additions and 43 deletions

View File

@@ -0,0 +1,44 @@
import 'package:easy_localization/easy_localization.dart' hide tr;
import 'package:flutter/material.dart';
import 'package:userfront/i18n.dart';
import '../theme/theme_controller.dart';
class ThemeToggleButton extends StatelessWidget {
const ThemeToggleButton({super.key, this.compact = false});
final bool compact;
@override
Widget build(BuildContext context) {
context.locale;
return ValueListenableBuilder<ThemeMode>(
valueListenable: ThemeController.instance,
builder: (context, mode, _) {
final isLight = mode == ThemeMode.light;
final icon = isLight
? Icons.light_mode_outlined
: Icons.dark_mode_outlined;
final label = isLight
? tr('ui.common.theme_light', fallback: 'Light')
: tr('ui.common.theme_dark', fallback: 'Dark');
final tooltip = tr('ui.common.theme_toggle', fallback: '테마 전환');
if (compact) {
return IconButton(
tooltip: tooltip,
onPressed: () => ThemeController.instance.toggle(),
icon: Icon(icon),
);
}
return OutlinedButton.icon(
onPressed: () => ThemeController.instance.toggle(),
icon: Icon(icon, size: 18),
label: Text(label),
);
},
);
}
}