aboutsummaryrefslogtreecommitdiffstats
path: root/lib/presentation/screens/home/home.dart
blob: 0ee52ac15ff8d8f0d6963cccaece29b7ea5ed488 (plain)
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
import 'package:flutter_ics_homescreen/export.dart';
// import 'package:media_kit_video/media_kit_video.dart';

final bkgImageProvider = Provider((ref) {
  return Container(
      width: 1080,
      height: 1920,
      decoration: const BoxDecoration(
        image: DecorationImage(
          image: AssetImage("assets/BG_Sequence_00000.png"),
        ),
      ));
});

final bkgAnimationProvider = Provider((ref) {
  return Lottie.asset(
    'animations/BG-dotwaveform.json',
    fit: BoxFit.cover,
    repeat: true,
  );
});

class HomeScreen extends ConsumerStatefulWidget {
  const HomeScreen({
    super.key,
  });

  @override
  HomeScreenState createState() => HomeScreenState();
}

class HomeScreenState extends ConsumerState<HomeScreen> {
  @override
  void initState() {
    ref.read(appLauncherProvider).run();
    super.initState();
  }

  @override
  void dispose() {
    // player.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Consumer(builder: (context, ref, child) {
      final appState = ref.watch(appProvider);
      final bool disableBkgAnimation =
          ref.watch(appConfigProvider).disableBkgAnimation;
      final bool plainBackground = ref.watch(appConfigProvider).plainBackground;
      return Scaffold(
        key: homeScaffoldKey,
        extendBody: true,
        extendBodyBehindAppBar: true,
        appBar: const CustomTopBar(),
        body: Stack(
          children: [
            if (!disableBkgAnimation)
              ref.watch(bkgAnimationProvider)
            else if (!plainBackground)
              ref.watch(bkgImageProvider),
            FlowBuilder<AppState>(
              state: appState,
              onGeneratePages: onGenerateAppViewPages,
              observers: [
                HeroController(),
              ],
            ),
            if (appState != AppState.splash)
              Positioned(
                top: 0,
                bottom: 0,
                child: Container(
                    padding: const EdgeInsets.only(left: 8),
                    height: 500,
                    child: const VolumeFanControl()),
              ),
          ],
        ),
        bottomNavigationBar:
            appState == AppState.splash ? null : const CustomBottomBar(),
      );
    });
  }
}