mirror of
https://github.com/MaidFoundation/maid.git
synced 2023-12-01 22:17:36 +03:00
Use provider to toggle theme
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:maid/pages/desktop_home.dart';
|
||||
import 'package:maid/static/memory_manager.dart';
|
||||
import 'package:maid/static/theme.dart';
|
||||
@@ -38,13 +39,17 @@ class MaidAppState extends State<MaidApp> {
|
||||
homePage = const MobileHomePage(title: 'Maid');
|
||||
}
|
||||
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: 'Maid',
|
||||
theme: lightTheme,
|
||||
darkTheme: darkTheme,
|
||||
themeMode: ThemeMode.dark,
|
||||
home: homePage,
|
||||
return Consumer<ThemeProvider>(
|
||||
builder: (context, themeProvider, child) {
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
title: 'Maid',
|
||||
theme: lightTheme,
|
||||
darkTheme: darkTheme,
|
||||
themeMode: themeProvider.themeMode,
|
||||
home: homePage
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ThemeProvider extends ChangeNotifier {
|
||||
ThemeMode _themeMode = ThemeMode.dark;
|
||||
|
||||
ThemeMode get themeMode => _themeMode;
|
||||
|
||||
bool get isDarkMode => _themeMode == ThemeMode.dark;
|
||||
|
||||
void toggleTheme() {
|
||||
_themeMode = _themeMode == ThemeMode.dark ? ThemeMode.light : ThemeMode.dark;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
ThemeData lightTheme = ThemeData(
|
||||
iconTheme: const IconThemeData(color: Colors.black),
|
||||
textTheme: const TextTheme(
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:maid/static/logger.dart';
|
||||
import 'package:maid/static/theme.dart';
|
||||
import 'package:maid/widgets/chat_widgets/code_box.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class SettingsBody extends StatefulWidget {
|
||||
@@ -17,13 +18,13 @@ class _SettingsBodyState extends State<SettingsBody> {
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
//SwitchListTile(
|
||||
// title: const Text('Theme (Light/Dark)'),
|
||||
// value: (true) ? true : false,
|
||||
// onChanged: (value) {
|
||||
// // TODO: Fix toggle
|
||||
// },
|
||||
//),
|
||||
SwitchListTile(
|
||||
title: const Text('Theme (Light/Dark)'),
|
||||
value: Provider.of<ThemeProvider>(context, listen: false).isDarkMode,
|
||||
onChanged: (value) {
|
||||
Provider.of<ThemeProvider>(context, listen: false).toggleTheme();
|
||||
},
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
|
||||
16
pubspec.lock
16
pubspec.lock
@@ -336,6 +336,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.16.4"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: nested
|
||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -472,6 +480,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.7.3"
|
||||
provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: provider
|
||||
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.1"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -45,6 +45,7 @@ dependencies:
|
||||
filesystem_picker: ^4.0.0
|
||||
http: ^1.1.0
|
||||
device_info_plus: ^9.1.1
|
||||
provider: ^6.1.1
|
||||
|
||||
dev_dependencies:
|
||||
msix: ^3.9.1
|
||||
|
||||
Reference in New Issue
Block a user