import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/material.dart'; /// Application settings route /// /// @author Pierre HUBERT class AppSettingsRoute extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(tr("App settings")), ), body: _AppSettingsBody(), ); } } class _AppSettingsBody extends StatefulWidget { @override __AppSettingsBodyState createState() => __AppSettingsBodyState(); } class __AppSettingsBodyState extends State<_AppSettingsBody> { PreferencesHelper _preferencesHelper; @override void initState() { super.initState(); _load(); } void _load() async { final prefs = await PreferencesHelper.getInstance(); setState(() { _preferencesHelper = prefs; }); } void _needRefresh() { setState(() {}); } @override Widget build(BuildContext context) { if (_preferencesHelper == null) return Center(child: CircularProgressIndicator()); return Padding( padding: const EdgeInsets.all(8.0), child: ListView( children: [ // Dark theme _CheckBoxPreference( preferenceKey: PreferencesKeyList.ENABLE_DARK_THEME, preferencesHelper: _preferencesHelper, onUpdate: _needRefresh, title: tr("Enable dark theme"), description: tr("You will need to restart the application to apply changes"), ), ], ), ); } } class _CheckBoxPreference extends StatelessWidget { final PreferencesKeyList preferenceKey; final PreferencesHelper preferencesHelper; final VoidCallback onUpdate; final String title; final String description; const _CheckBoxPreference({ Key key, @required this.preferenceKey, @required this.preferencesHelper, @required this.onUpdate, @required this.title, @required this.description, }) : assert(preferencesHelper != null), assert(preferencesHelper != null), assert(onUpdate != null), assert(title != null), assert(description != null), super(key: key); @override Widget build(BuildContext context) { return SwitchListTile( value: preferencesHelper.getBool(preferenceKey), onChanged: (b) async { await preferencesHelper.setBool(preferenceKey, b); onUpdate(); return true; }, title: Text(title), subtitle: Text(description), ); } }