import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:maxkey_flutter/maxkey/maxkey.dart'; import 'package:maxkey_flutter/persistent.dart'; import 'package:maxkey_flutter/utils.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; part 'package:maxkey_flutter/pages/settings_page/components/theme_mode_setting.dart'; part 'package:maxkey_flutter/pages/settings_page/components/host_setting.dart'; part 'package:maxkey_flutter/pages/settings_page/components/show_log_btn.dart'; class SettingsPage extends StatelessWidget { const SettingsPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(AppLocalizations.of(context)!.settingsPageTitle)), body: const SafeArea( child: Padding( padding: EdgeInsets.symmetric(horizontal: 16.0), child: Column( children: [ _ThemeModeSwitch(), SizedBox(height: 8.0), _SetHostButton(), SizedBox(height: 8.0), _ShowLogBtn(), ], ), ), ), ); } } class _SettingTile extends StatelessWidget { const _SettingTile({ super.key, required this.title, this.desc, required this.action, this.onTap, }); final String title; final String? desc; final Widget action; final void Function()? onTap; @override Widget build(BuildContext context) { final scheme = Theme.of(context).colorScheme; return ListTile( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), tileColor: scheme.surfaceContainer, title: Text(title, maxLines: 1), subtitle: desc == null ? null : Text(desc!, maxLines: 2), isThreeLine: desc == null ? false : true, trailing: action, onTap: onTap, ); } }