@@ -14,7 +14,6 @@ import '../../Theme/ThemeProvider.dart';
14
14
import '../../Widgets/CachedNetworkImage.dart' ;
15
15
import '../../Widgets/ScrollConfig.dart' ;
16
16
import 'MediaScreenViewModel.dart' ;
17
- import 'Tabs/Watch/WatchPage.dart' ;
18
17
19
18
class MediaInfoPage extends StatefulWidget {
20
19
final media mediaData;
@@ -27,26 +26,29 @@ class MediaInfoPage extends StatefulWidget {
27
26
28
27
class MediaInfoPageState extends State <MediaInfoPage > {
29
28
int _selectedIndex = 0 ;
30
- final _viewModel = Get .put (MediaPageViewModel ());
29
+ late MediaPageViewModel _viewModel;
30
+
31
31
late media mediaData;
32
32
33
33
@override
34
34
void initState () {
35
35
super .initState ();
36
- WidgetsBinding .instance.addPostFrameCallback ((_) {
37
- _viewModel.reset ();
38
- });
36
+ _viewModel = Get .put (MediaPageViewModel (), tag: widget.mediaData.id.toString ());
39
37
load ();
40
38
}
41
39
42
40
var loaded = false ;
43
41
44
42
Future <void > load () async {
45
43
mediaData = widget.mediaData;
46
- mediaData = await _viewModel.getMediaDetails (widget.mediaData);
47
- setState (() {
48
- loaded = true ;
49
- });
44
+
45
+ if (! _viewModel.dataLoaded.value) {
46
+ mediaData = await _viewModel.getMediaDetails (widget.mediaData);
47
+ } else {
48
+ mediaData = _viewModel.cacheMediaData! ;
49
+ }
50
+
51
+ setState (() => loaded = true );
50
52
}
51
53
52
54
@override
@@ -62,11 +64,13 @@ class MediaInfoPageState extends State<MediaInfoPage> {
62
64
[
63
65
Padding (
64
66
padding: const EdgeInsets .symmetric (),
65
- child: loaded ? Column (
66
- mainAxisAlignment: MainAxisAlignment .start,
67
- crossAxisAlignment: CrossAxisAlignment .start,
68
- children: [_buildSliverContent ()],
69
- ) : const Center (child: CircularProgressIndicator ()),
67
+ child: loaded
68
+ ? Column (
69
+ mainAxisAlignment: MainAxisAlignment .start,
70
+ crossAxisAlignment: CrossAxisAlignment .start,
71
+ children: [_buildSliverContent ()],
72
+ )
73
+ : const Center (child: CircularProgressIndicator ()),
70
74
),
71
75
],
72
76
),
@@ -76,6 +80,7 @@ class MediaInfoPageState extends State<MediaInfoPage> {
76
80
bottomNavigationBar: _buildBottomNavigationBar (),
77
81
);
78
82
}
83
+
79
84
Widget _buildSliverContent () {
80
85
return IndexedStack (
81
86
index: _selectedIndex,
@@ -90,7 +95,6 @@ class MediaInfoPageState extends State<MediaInfoPage> {
90
95
);
91
96
}
92
97
93
-
94
98
BottomNavigationBar _buildBottomNavigationBar () {
95
99
var isAnime = mediaData.anime != null ;
96
100
return BottomNavigationBar (
@@ -101,7 +105,8 @@ class MediaInfoPageState extends State<MediaInfoPage> {
101
105
label: 'INFO' ,
102
106
),
103
107
BottomNavigationBarItem (
104
- icon: Icon (isAnime ? Icons .movie_filter_rounded : Icons .import_contacts),
108
+ icon: Icon (
109
+ isAnime ? Icons .movie_filter_rounded : Icons .import_contacts),
105
110
label: isAnime ? 'WATCH' : 'READ' ,
106
111
),
107
112
const BottomNavigationBarItem (
0 commit comments