use adaptive theme for toggling

This commit is contained in:
Neeraj Gupta 2022-03-09 11:27:27 +05:30
parent ec95293ff8
commit 0525f6b910
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
3 changed files with 41 additions and 25 deletions

View file

@ -1,3 +1,4 @@
import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:background_fetch/background_fetch.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
@ -139,23 +140,26 @@ class _EnteAppState extends State<EnteApp> with WidgetsBindingObserver {
@override
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

View file

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

View file

@ -1,3 +1,4 @@
import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
@ -6,16 +7,24 @@ class ThemeSwitchWidget extends StatelessWidget {
@override
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) {
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'),
);
}
}