forked from firka/student-legacy
47 lines
1.4 KiB
Dart
47 lines
1.4 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:home_widget/home_widget.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:shake_flutter/models/shake_theme.dart';
|
|
import 'package:shake_flutter/shake_flutter.dart';
|
|
|
|
Future<bool?> updateWidget() async {
|
|
try {
|
|
return HomeWidget.updateWidget(name: 'widget_timetable.WidgetTimetable');
|
|
} on PlatformException catch (exception) {
|
|
if (kDebugMode) {
|
|
print('Error Updating Widget After changeTheme. $exception');
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
class ThemeModeObserver extends ChangeNotifier {
|
|
ThemeMode _themeMode;
|
|
bool _updateNavbarColor;
|
|
ThemeMode get themeMode => _themeMode;
|
|
bool get updateNavbarColor => _updateNavbarColor;
|
|
|
|
ThemeModeObserver(
|
|
{ThemeMode initialTheme = ThemeMode.system,
|
|
bool updateNavbarColor = true})
|
|
: _themeMode = initialTheme,
|
|
_updateNavbarColor = updateNavbarColor;
|
|
|
|
void changeTheme(ThemeMode mode, {bool updateNavbarColor = true}) {
|
|
_themeMode = mode;
|
|
_updateNavbarColor = updateNavbarColor;
|
|
if (Platform.isAndroid) updateWidget();
|
|
notifyListeners();
|
|
|
|
// change shake theme as well
|
|
ShakeTheme darkTheme = ShakeTheme();
|
|
darkTheme.accentColor = "#FFFFFF";
|
|
ShakeTheme lightTheme = ShakeTheme();
|
|
lightTheme.accentColor = "#000000";
|
|
Shake.setShakeTheme(mode == ThemeMode.dark ? darkTheme : lightTheme);
|
|
}
|
|
}
|