aboutsummaryrefslogtreecommitdiff
path: root/lib/main.dart
blob: 54a02bf4f170f8394bf1a8199c75171d2b2e78aa (plain) (blame)
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
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> {
  // State
  final config = StreamStateValue<Config>(
      stream$: getConfig$(),
      value: Config(),
  );
  final favoriteApps = StreamStateValue<List<Application>>(
      stream$: getFavorites$(),
      value: [],
  );
  final dateTime = StreamStateValue<DateTime>(
      stream$: Stream.periodic(Duration(seconds: 1), (_x) => DateTime.now()).asBroadcastStream(),
      value: DateTime.now(),
  );
  void initState() {
    super.initState();
    initStateValue(config);
    initConfig();
    initStateValue(favoriteApps);
    initFavorites();
    initStateValue(dateTime);
  }

  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(
                    dateTime: dateTime.value,
                    favoriteApps: favoriteApps.value,
                ),
                AppsView(),
              ],
          ),
      ),
    );
  }
}

class MyApp extends StatefulWidget {
  MyAppState createState() => MyAppState();
}