1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 08:15:16 +00:00

Add dark theme

This commit is contained in:
2019-11-01 13:48:40 +01:00
parent 9e151639c2
commit 6a34df6814
3 changed files with 104 additions and 8 deletions

View File

@ -1,3 +1,4 @@
import 'package:comunic/helpers/preferences_helper.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:flutter/material.dart';
@ -23,9 +24,81 @@ class _AppSettingsBody extends StatefulWidget {
}
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) {
return ListView(children: <Widget>[],);
if (_preferencesHelper == null)
return Center(child: CircularProgressIndicator());
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListView(
children: <Widget>[
// 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),
);
}
}