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
|
import 'package:flutter_ics_homescreen/export.dart';
import '../../common_widget/voice_assistant_button.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()),
),
// Voice Assistant Button
if (appState != AppState.splash && ref.watch(voiceAssistantStateProvider.select((value)=>value.isVoiceAssistantEnable)))
Positioned(
top: MediaQuery.of(context).size.height * 0.82,
child: Container(
padding: const EdgeInsets.only(left: 8),
child: const VoiceAssistantButton()
),
),
],
),
bottomNavigationBar:
appState == AppState.splash ? null : const CustomBottomBar(),
);
});
}
}
|