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