1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:device_apps/device_apps.dart';
import 'pages/Home.dart';
import 'pages/Apps.dart';
import 'data/config.dart';
import 'data/favorites.dart';
import 'helpers/StreamState.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyAppState extends StreamState<MyApp> {
// Streams
final Stream<DateTime> time$ =
Stream.periodic(Duration(seconds: 1), (_x) => DateTime.now()).asBroadcastStream();
// State
final config = StreamStateValue<Config>(
stream$: getConfig$(),
value: Config(),
);
final favoriteApps = StreamStateValue<List<Application>>(
stream$: getFavorites$(),
value: [],
);
void initState() {
super.initState();
initStateValue(config);
initConfig();
initStateValue(favoriteApps);
initFavorites();
}
@override
void dispose() {
super.dispose();
time$.drain();
}
ThemeData getLightTheme() {
return ThemeData(brightness: Brightness.light);
}
ThemeData getDarkTheme() {
Color fg = Color(0xFFD8DEE9);
return ThemeData(
backgroundColor: Color(0xFF1F2225),
scaffoldBackgroundColor: Color(0xFF0F1215),
accentColor: fg,
primaryColor: Color(0xFF5E81AC),
textTheme: TextTheme(
headline1: TextStyle(color: fg),
headline2: TextStyle(color: fg),
headline3: TextStyle(color: fg),
headline4: TextStyle(color: fg),
headline5: TextStyle(color: fg),
headline6: TextStyle(color: fg),
subtitle1: TextStyle(color: fg),
subtitle2: TextStyle(color: fg),
bodyText1: TextStyle(color: fg),
bodyText2: TextStyle(color: fg),
button: TextStyle(color: fg),
caption: TextStyle(color: fg),
overline: TextStyle(color: fg),
),
);
}
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'owyn launcher',
theme: getLightTheme(),
darkTheme: getDarkTheme(),
themeMode: config.value.isDarkMode() ? ThemeMode.dark : ThemeMode.light,
home: Scaffold(
body: PageView(
controller: PageController(keepPage: true),
children: [
HomeView(
time$: time$,
defaultTime: DateTime.now(),
favoriteApps: favoriteApps.value,
),
AppsView(),
],
),
),
);
}
}
class MyApp extends StatefulWidget {
MyAppState createState() => MyAppState();
}
|