cwtch-ui/lib/views/globalsettingsview.dart

67 lines
2.6 KiB
Dart
Raw Normal View History

2021-06-24 23:10:45 +00:00
import 'dart:convert';
import 'package:cwtch/cwtch_icons_icons.dart';
import 'package:cwtch/views/globalsettingsaboutview.dart';
import 'package:cwtch/views/globalsettingsappearanceview.dart';
import 'package:cwtch/views/globalsettingsbehaviourview.dart';
import 'package:cwtch/views/globalsettingsexperimentsview.dart';
2021-06-24 23:10:45 +00:00
import 'package:flutter/material.dart';
import 'package:cwtch/settings.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../main.dart';
/// Global Settings View provides access to modify all the Globally Relevant Settings including Locale, Theme and Experiments.
class GlobalSettingsView extends StatefulWidget {
@override
_GlobalSettingsViewState createState() => _GlobalSettingsViewState();
}
class _GlobalSettingsViewState extends State<GlobalSettingsView> {
ScrollController settingsListScrollController = ScrollController();
2021-06-24 23:10:45 +00:00
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
2024-01-04 09:53:10 +00:00
return DefaultTabController(
length: 4,
child: Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.cwtchSettingsTitle),
bottom: TabBar(
2024-01-04 09:59:51 +00:00
isScrollable: true,
2024-01-04 09:53:10 +00:00
tabs: [
2024-02-03 02:08:21 +00:00
Tab(key: Key("OpenSettingsAppearance"), icon: Icon(Icons.palette), text: AppLocalizations.of(context)!.settingsGroupAppearance),
Tab(key: Key("OpenSettingsBehaviour"), icon: Icon(Icons.settings), text: AppLocalizations.of(context)!.settingGroupBehaviour),
Tab(key: Key("OpenSettingsExperiments"), icon: Icon(CwtchIcons.enable_experiments), text: AppLocalizations.of(context)!.settingsGroupExperiments),
Tab(icon: Icon(Icons.info), text: AppLocalizations.of(context)!.settingsGroupAbout),
2024-01-04 09:53:10 +00:00
],
)),
body: _buildSettingsList(),
));
2021-06-24 23:10:45 +00:00
}
Widget _buildSettingsList() {
return Consumer<Settings>(builder: (ccontext, settings, child) {
2024-02-03 02:08:21 +00:00
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
2024-01-04 09:53:10 +00:00
return TabBarView(children: [
GlobalSettingsAppearanceView(),
GlobalSettingsBehaviourView(),
GlobalSettingsExperimentsView(),
GlobalSettingsAboutView(),
2024-01-04 09:53:10 +00:00
]);
2021-06-24 23:10:45 +00:00
});
});
}
2021-12-15 20:17:13 +00:00
}
2021-06-24 23:10:45 +00:00
/// Send an UpdateGlobalSettings to the Event Bus
saveSettings(context) {
var settings = Provider.of<Settings>(context, listen: false);
2024-02-03 02:08:21 +00:00
Provider.of<FlwtchState>(context, listen: false).cwtch.UpdateSettings(jsonEncode(settings.asJson()));
2021-06-24 23:10:45 +00:00
}