Sfoglia il codice sorgente

use adaptive theme for toggling

Neeraj Gupta 3 anni fa
parent
commit
0525f6b910
3 ha cambiato i file con 41 aggiunte e 25 eliminazioni
  1. 21 17
      lib/app.dart
  2. 3 0
      lib/main.dart
  3. 17 8
      lib/ui/settings/theme_switch_widget.dart

+ 21 - 17
lib/app.dart

@@ -1,3 +1,4 @@
+import 'package:adaptive_theme/adaptive_theme.dart';
 import 'package:background_fetch/background_fetch.dart';
 import 'package:background_fetch/background_fetch.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_easyloading/flutter_easyloading.dart';
 import 'package:flutter_easyloading/flutter_easyloading.dart';
@@ -139,23 +140,26 @@ class _EnteAppState extends State<EnteApp> with WidgetsBindingObserver {
 
 
   @override
   @override
   Widget build(BuildContext context) {
   Widget build(BuildContext context) {
-    return MaterialApp(
-      title: "ente",
-      themeMode: ThemeMode.system,
-      theme: lightThemeData,
-      darkTheme: darkThemeData,
-      home: EnteApp._homeWidget,
-      debugShowCheckedModeBanner: false,
-      navigatorKey: Network.instance.getAlice().getNavigatorKey(),
-      builder: EasyLoading.init(),
-      supportedLocales: L10n.all,
-      localizationsDelegates: const [
-        AppLocalizations.delegate,
-        GlobalMaterialLocalizations.delegate,
-        GlobalCupertinoLocalizations.delegate,
-        GlobalWidgetsLocalizations.delegate,
-      ],
-    );
+    return AdaptiveTheme(
+        light: lightThemeData,
+        dark: darkThemeData,
+        initial: AdaptiveThemeMode.dark,
+        builder: (lightTheme, dartTheme) => MaterialApp(
+              title: "ente",
+              theme: lightTheme,
+              darkTheme: dartTheme,
+              home: EnteApp._homeWidget,
+              debugShowCheckedModeBanner: false,
+              navigatorKey: Network.instance.getAlice().getNavigatorKey(),
+              builder: EasyLoading.init(),
+              supportedLocales: L10n.all,
+              localizationsDelegates: const [
+                AppLocalizations.delegate,
+                GlobalMaterialLocalizations.delegate,
+                GlobalCupertinoLocalizations.delegate,
+                GlobalWidgetsLocalizations.delegate,
+              ],
+            ));
   }
   }
 
 
   @override
   @override

+ 3 - 0
lib/main.dart

@@ -2,6 +2,7 @@ import 'dart:async';
 import 'dart:io';
 import 'dart:io';
 import 'dart:isolate';
 import 'dart:isolate';
 
 
+import 'package:adaptive_theme/adaptive_theme.dart';
 import 'package:background_fetch/background_fetch.dart';
 import 'package:background_fetch/background_fetch.dart';
 import 'package:firebase_messaging/firebase_messaging.dart';
 import 'package:firebase_messaging/firebase_messaging.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/foundation.dart';
@@ -37,6 +38,7 @@ import 'package:super_logging/super_logging.dart';
 final _logger = Logger("main");
 final _logger = Logger("main");
 
 
 bool _isProcessRunning = false;
 bool _isProcessRunning = false;
+AdaptiveThemeMode _savedThemeMode;
 const kLastBGTaskHeartBeatTime = "bg_task_hb_time";
 const kLastBGTaskHeartBeatTime = "bg_task_hb_time";
 const kLastFGTaskHeartBeatTime = "fg_task_hb_time";
 const kLastFGTaskHeartBeatTime = "fg_task_hb_time";
 const kHeartBeatFrequency = Duration(seconds: 1);
 const kHeartBeatFrequency = Duration(seconds: 1);
@@ -108,6 +110,7 @@ void _headlessTaskHandler(HeadlessTask task) {
 Future<void> _init(bool isBackground) async {
 Future<void> _init(bool isBackground) async {
   _isProcessRunning = true;
   _isProcessRunning = true;
   _logger.info("Initializing...");
   _logger.info("Initializing...");
+  _savedThemeMode = await AdaptiveTheme.getThemeMode();
   _scheduleHeartBeat(isBackground);
   _scheduleHeartBeat(isBackground);
   if (isBackground) {
   if (isBackground) {
     AppLifecycleService.instance.onAppInBackground();
     AppLifecycleService.instance.onAppInBackground();

+ 17 - 8
lib/ui/settings/theme_switch_widget.dart

@@ -1,3 +1,4 @@
+import 'package:adaptive_theme/adaptive_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter/widgets.dart';
 
 
@@ -6,16 +7,24 @@ class ThemeSwitchWidget extends StatelessWidget {
 
 
   @override
   @override
   Widget build(BuildContext context) {
   Widget build(BuildContext context) {
-    return Switch(
-      value: true,
-      activeColor: Colors.black,
+    return Switch.adaptive(
+      value: Theme.of(context).colorScheme.onSurface == Colors.black,
+      activeColor: Theme.of(context).colorScheme.onSurface,
+      activeTrackColor: Theme.of(context).colorScheme.onBackground,
+      inactiveTrackColor: Theme.of(context).colorScheme.onSurface,
+      inactiveThumbColor: Theme.of(context).colorScheme.primary,
+      hoverColor: Theme.of(context).colorScheme.onSurface,
       onChanged: (bool value) {
       onChanged: (bool value) {
-        print(value);
+        if (value) {
+          AdaptiveTheme.of(context).setLight();
+        } else {
+          AdaptiveTheme.of(context).setDark();
+        }
       },
       },
-      activeThumbImage: new NetworkImage(
-          'https://cdn0.iconfinder.com/data/icons/multimedia-solid-30px/30/moon_dark_mode_night-512.png'),
-      inactiveThumbImage: new NetworkImage(
-          'https://cdn0.iconfinder.com/data/icons/multimedia-solid-30px/30/moon_dark_mode_night-512.png'),
+      // activeThumbImage: new NetworkImage(
+      //     'https://cdn0.iconfinder.com/data/icons/multimedia-solid-30px/30/moon_dark_mode_night-512.png'),
+      // inactiveThumbImage: new NetworkImage(
+      //     'https://cdn0.iconfinder.com/data/icons/multimedia-solid-30px/30/moon_dark_mode_night-512.png'),
     );
     );
   }
   }
 }
 }