54 lines
1.5 KiB
Dart
54 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import '../presentation/theme_view_model.dart';
|
|
import 'widgets/settings_section_header.dart';
|
|
import 'widgets/theme_option_tile.dart';
|
|
|
|
/// 主题选择页
|
|
///
|
|
/// 通过 [ThemeViewModel] 读写主题状态,不直接感知 app 级 Provider。
|
|
class ThemeView extends ConsumerWidget {
|
|
const ThemeView({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final current = ref.watch(themeViewModelProvider);
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('主题'),
|
|
),
|
|
body: ListView(
|
|
children: [
|
|
const SettingsSectionHeader(title: '外观'),
|
|
ThemeOptionTile(
|
|
label: '跟随系统',
|
|
mode: ThemeMode.system,
|
|
current: current,
|
|
onTap: () => ref
|
|
.read(themeViewModelProvider.notifier)
|
|
.setMode(ThemeMode.system),
|
|
),
|
|
ThemeOptionTile(
|
|
label: '黑色模式',
|
|
mode: ThemeMode.dark,
|
|
current: current,
|
|
onTap: () => ref
|
|
.read(themeViewModelProvider.notifier)
|
|
.setMode(ThemeMode.dark),
|
|
),
|
|
ThemeOptionTile(
|
|
label: '白色模式',
|
|
mode: ThemeMode.light,
|
|
current: current,
|
|
onTap: () => ref
|
|
.read(themeViewModelProvider.notifier)
|
|
.setMode(ThemeMode.light),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|