Skip to content

Commit b03a8e4

Browse files
committed
feat: add theme presistence
1 parent d3fc954 commit b03a8e4

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

mobile/lib/app/theme_cubit.dart

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
3+
import 'package:shared_preferences/shared_preferences.dart';
34

45
class ThemeCubit extends Cubit<ThemeMode> {
5-
ThemeCubit() : super(ThemeMode.dark);
6+
ThemeCubit() : super(ThemeMode.dark) {
7+
_loadTheme();
8+
}
9+
10+
void _loadTheme() async {
11+
var instance = await SharedPreferences.getInstance();
12+
emit(instance.getBool('dark_mode') == true ? ThemeMode.dark : ThemeMode.light);
13+
}
614

7-
void toggleTheme(bool isDark) {
15+
void toggleTheme(bool isDark) async {
16+
var instance = await SharedPreferences.getInstance();
17+
instance.setBool('dark_mode', isDark);
818
emit(isDark ? ThemeMode.dark : ThemeMode.light);
919
}
1020
}

mobile/pubspec.lock

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ packages:
153153
url: "https://pub.dev"
154154
source: hosted
155155
version: "2.1.4"
156+
file:
157+
dependency: transitive
158+
description:
159+
name: file
160+
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
161+
url: "https://pub.dev"
162+
source: hosted
163+
version: "7.0.1"
156164
firebase_analytics:
157165
dependency: "direct main"
158166
description:
@@ -440,6 +448,30 @@ packages:
440448
url: "https://pub.dev"
441449
source: hosted
442450
version: "1.9.1"
451+
path_provider_linux:
452+
dependency: transitive
453+
description:
454+
name: path_provider_linux
455+
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
456+
url: "https://pub.dev"
457+
source: hosted
458+
version: "2.2.1"
459+
path_provider_platform_interface:
460+
dependency: transitive
461+
description:
462+
name: path_provider_platform_interface
463+
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
464+
url: "https://pub.dev"
465+
source: hosted
466+
version: "2.1.2"
467+
path_provider_windows:
468+
dependency: transitive
469+
description:
470+
name: path_provider_windows
471+
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
472+
url: "https://pub.dev"
473+
source: hosted
474+
version: "2.3.0"
443475
petitparser:
444476
dependency: transitive
445477
description:
@@ -448,6 +480,14 @@ packages:
448480
url: "https://pub.dev"
449481
source: hosted
450482
version: "7.0.1"
483+
platform:
484+
dependency: transitive
485+
description:
486+
name: platform
487+
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
488+
url: "https://pub.dev"
489+
source: hosted
490+
version: "3.1.6"
451491
plugin_platform_interface:
452492
dependency: transitive
453493
description:
@@ -480,6 +520,62 @@ packages:
480520
url: "https://pub.dev"
481521
source: hosted
482522
version: "0.28.0"
523+
shared_preferences:
524+
dependency: "direct main"
525+
description:
526+
name: shared_preferences
527+
sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64"
528+
url: "https://pub.dev"
529+
source: hosted
530+
version: "2.5.4"
531+
shared_preferences_android:
532+
dependency: transitive
533+
description:
534+
name: shared_preferences_android
535+
sha256: cbc40be9be1c5af4dab4d6e0de4d5d3729e6f3d65b89d21e1815d57705644a6f
536+
url: "https://pub.dev"
537+
source: hosted
538+
version: "2.4.20"
539+
shared_preferences_foundation:
540+
dependency: transitive
541+
description:
542+
name: shared_preferences_foundation
543+
sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
544+
url: "https://pub.dev"
545+
source: hosted
546+
version: "2.5.6"
547+
shared_preferences_linux:
548+
dependency: transitive
549+
description:
550+
name: shared_preferences_linux
551+
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
552+
url: "https://pub.dev"
553+
source: hosted
554+
version: "2.4.1"
555+
shared_preferences_platform_interface:
556+
dependency: transitive
557+
description:
558+
name: shared_preferences_platform_interface
559+
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
560+
url: "https://pub.dev"
561+
source: hosted
562+
version: "2.4.1"
563+
shared_preferences_web:
564+
dependency: transitive
565+
description:
566+
name: shared_preferences_web
567+
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
568+
url: "https://pub.dev"
569+
source: hosted
570+
version: "2.4.3"
571+
shared_preferences_windows:
572+
dependency: transitive
573+
description:
574+
name: shared_preferences_windows
575+
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
576+
url: "https://pub.dev"
577+
source: hosted
578+
version: "2.4.1"
483579
sky_engine:
484580
dependency: transitive
485581
description: flutter
@@ -637,6 +733,14 @@ packages:
637733
url: "https://pub.dev"
638734
source: hosted
639735
version: "1.1.1"
736+
xdg_directories:
737+
dependency: transitive
738+
description:
739+
name: xdg_directories
740+
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
741+
url: "https://pub.dev"
742+
source: hosted
743+
version: "1.1.0"
640744
xml:
641745
dependency: transitive
642746
description:

mobile/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dependencies:
2525
flutter_native_splash: ^2.4.7
2626
equatable: ^2.0.8
2727
rxdart: ^0.28.0
28+
shared_preferences: ^2.5.4
2829

2930
dev_dependencies:
3031
flutter_test:

0 commit comments

Comments
 (0)