Files
umbrix/lib/features/settings/view/settings_page.dart
2023-07-26 23:35:51 +03:30

68 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:hiddify/core/core_providers.dart';
import 'package:hiddify/core/router/router.dart';
import 'package:hiddify/features/settings/widgets/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:recase/recase.dart';
class SettingsPage extends HookConsumerWidget {
const SettingsPage({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
const divider = Divider(indent: 16, endIndent: 16);
return Scaffold(
appBar: AppBar(
title: Text(t.settings.pageTitle.titleCase),
),
body: ListTileTheme(
data: ListTileTheme.of(context).copyWith(
contentPadding: const EdgeInsetsDirectional.only(start: 48, end: 16),
),
child: ListView(
children: [
_SettingsSectionHeader(
t.settings.general.sectionTitle.titleCase,
),
const AppearanceSettingTiles(),
divider,
_SettingsSectionHeader(t.settings.network.sectionTitle.titleCase),
const NetworkSettingTiles(),
divider,
ListTile(
title: Text(t.settings.clash.sectionTitle.titleCase),
leading: const Icon(Icons.edit_document),
contentPadding: const EdgeInsets.symmetric(horizontal: 16),
onTap: () async {
await const ClashOverridesRoute().push(context);
},
),
const Gap(16),
],
),
),
);
}
}
class _SettingsSectionHeader extends StatelessWidget {
const _SettingsSectionHeader(this.title);
final String title;
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: Text(
title,
style: Theme.of(context).textTheme.titleMedium,
),
);
}
}