@@ -4,10 +4,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
44import 'package:flutter_zustand/flutter_zustand.dart' ;
55import 'package:iris/hooks/use_fvp_player.dart' ;
66import 'package:iris/hooks/use_media_kit_player.dart' ;
7- import 'package:iris/models/player.dart' ;
87import 'package:iris/models/store/app_state.dart' ;
98import 'package:iris/pages/player/iris_player.dart' ;
9+ import 'package:iris/pages/storages/storages.dart' ;
1010import 'package:iris/store/use_app_store.dart' ;
11+ import 'package:iris/store/use_ui_store.dart' ;
1112
1213class Home extends HookWidget {
1314 const Home ({super .key});
@@ -16,69 +17,56 @@ class Home extends HookWidget {
1617 Widget build (BuildContext context) {
1718 final playerBackend =
1819 useAppStore ().select (context, (state) => state.playerBackend);
20+ final isPlayerExpanded =
21+ useUiStore ().select (context, (state) => state.isPlayerExpanded);
1922
20- final playerState = useState <MediaPlayer ?>(null );
21-
22- void handlePlayerCreated (MediaPlayer player) {
23- WidgetsBinding .instance.addPostFrameCallback ((_) {
24- if (context.mounted) {
25- playerState.value = player;
26- }
27- });
28- }
29-
30- final Widget playerHost;
31- switch (playerBackend) {
32- case PlayerBackend .mediaKit:
33- playerHost = _MediaKitPlayerHost (onPlayerCreated: handlePlayerCreated);
34- break ;
35- case PlayerBackend .fvp:
36- playerHost = _FvpPlayerHost (onPlayerCreated: handlePlayerCreated);
37- break ;
38- }
23+ final IrisPlayer player = () {
24+ switch (playerBackend) {
25+ case PlayerBackend .mediaKit:
26+ return IrisPlayer (
27+ key: const ValueKey ('media-kit' ),
28+ playerHooks: useMediaKitPlayer,
29+ );
30+ case PlayerBackend .fvp:
31+ return IrisPlayer (
32+ key: const ValueKey ('fvp' ),
33+ playerHooks: useFvpPlayer,
34+ );
35+ }
36+ }();
3937
4038 return AnnotatedRegion (
41- value: const SystemUiOverlayStyle (
42- statusBarIconBrightness: Brightness .light,
43- statusBarColor: Colors .transparent,
44- systemNavigationBarColor: Colors .transparent,
39+ value: SystemUiOverlayStyle (
40+ statusBarIconBrightness: isPlayerExpanded
41+ ? Brightness .light
42+ : Theme .of (context).brightness == Brightness .dark
43+ ? Brightness .light
44+ : Brightness .dark,
45+ statusBarColor: isPlayerExpanded
46+ ? const Color .fromRGBO (0 , 0 , 0 , 0.5 )
47+ : Theme .of (context).colorScheme.surface,
48+ systemNavigationBarColor: isPlayerExpanded ? null : Colors .transparent,
4549 ),
4650 child: Scaffold (
47- backgroundColor: Color (0xFF2f2f2f ),
48- body: Stack (
49- children: [
50- playerHost,
51- if (playerState.value != null )
52- IrisPlayer (player: playerState.value! )
53- ],
51+ body: SafeArea (
52+ left: ! isPlayerExpanded,
53+ top: ! isPlayerExpanded,
54+ right: ! isPlayerExpanded,
55+ bottom: ! isPlayerExpanded,
56+ child: Stack (
57+ children: [
58+ Positioned (
59+ left: 0 ,
60+ top: 48 ,
61+ right: 0 ,
62+ bottom: 112 ,
63+ child: Storages (),
64+ ),
65+ player,
66+ ],
67+ ),
5468 ),
5569 ),
5670 );
5771 }
5872}
59-
60- class _MediaKitPlayerHost extends HookWidget {
61- final ValueChanged <MediaPlayer > onPlayerCreated;
62-
63- const _MediaKitPlayerHost ({required this .onPlayerCreated});
64-
65- @override
66- Widget build (BuildContext context) {
67- final player = useMediaKitPlayer (context);
68- onPlayerCreated (player);
69- return Container (); // Doesn't build any UI itself.
70- }
71- }
72-
73- class _FvpPlayerHost extends HookWidget {
74- final ValueChanged <MediaPlayer > onPlayerCreated;
75-
76- const _FvpPlayerHost ({required this .onPlayerCreated});
77-
78- @override
79- Widget build (BuildContext context) {
80- final player = useFvpPlayer (context);
81- onPlayerCreated (player);
82- return Container (); // Doesn't build any UI itself.
83- }
84- }
0 commit comments