1
- import 'package:flutter/foundation .dart' ;
1
+ import 'package:flutter/gestures .dart' ;
2
2
import 'package:flutter/material.dart' ;
3
+
4
+ import '../../Adaptor/Media/MediaAdaptor.dart' ;
5
+ import '../../DataClass/Media.dart' ;
3
6
import '../../Widgets/ScrollConfig.dart' ;
4
- import 'CalendarViewModel.dart' ;
5
7
6
- class CalendarTabs extends StatefulWidget {
7
- final CalendarViewModel viewModel ;
8
+ class CalendarTabs extends StatefulWidget {
9
+ final Map < String , List <media>> data ;
8
10
9
- const CalendarTabs ({super .key,required this .viewModel });
11
+ const CalendarTabs ({super .key, required this .data });
10
12
11
13
@override
12
14
CalendarTabsState createState () => CalendarTabsState ();
13
15
}
14
16
15
-
16
- class CalendarTabsState extends State < CalendarTabs > with TickerProviderStateMixin {
17
+ class CalendarTabsState extends State < CalendarTabs >
18
+ with TickerProviderStateMixin {
17
19
TabController ? _tabController;
18
20
19
21
@override
20
22
void initState () {
21
23
super .initState ();
22
24
_tabController = TabController (
23
- length: widget.viewModel.calendarData.value ! .length,
25
+ length: widget.data.keys .length,
24
26
vsync: this ,
25
27
);
26
28
}
27
29
28
30
@override
29
31
void didUpdateWidget (CalendarTabs oldWidget) {
30
32
super .didUpdateWidget (oldWidget);
31
- var mediaListOld = oldWidget.viewModel.calendarData.value ! ;
32
- var mediaListNew = widget.viewModel.calendarData.value ! ;
33
+ var mediaListOld = oldWidget.data.values ;
34
+ var mediaListNew = widget.data.values ;
33
35
if (mediaListOld.length != mediaListNew.length) {
34
36
_tabController? .dispose ();
35
37
_tabController = TabController (
@@ -39,26 +41,54 @@ class CalendarTabsState extends State<CalendarTabs> with TickerProviderStateMixi
39
41
}
40
42
}
41
43
42
-
43
44
@override
44
45
Widget build (BuildContext context) {
45
- var calendarData = widget.viewModel.calendarData.value! ;
46
- if (kDebugMode) {
47
- print (calendarData);
48
-
49
- }var theme = Theme .of (context).colorScheme;
50
- return ScrollConfig (
51
- context,
46
+ var calendarData = widget.data;
47
+ var theme = Theme .of (context).colorScheme;
48
+ return ScrollConfig (context,
52
49
child: DefaultTabController (
53
- length: calendarData.length,
54
- child: const Column (
50
+ length: calendarData.keys. length,
51
+ child: Column (
55
52
crossAxisAlignment: CrossAxisAlignment .center,
56
53
mainAxisAlignment: MainAxisAlignment .center,
57
54
children: [
58
- Text ("tabs" )
55
+ TabBar (
56
+ indicatorSize: TabBarIndicatorSize .label,
57
+ isScrollable: true ,
58
+ dragStartBehavior: DragStartBehavior .start,
59
+ controller: _tabController,
60
+ labelStyle: const TextStyle (
61
+ fontFamily: 'Poppins' ,
62
+ fontWeight: FontWeight .bold,
63
+ fontSize: 14.0 ,
64
+ ),
65
+ unselectedLabelStyle: TextStyle (
66
+ fontFamily: 'Poppins' ,
67
+ fontWeight: FontWeight .bold,
68
+ fontSize: 14.0 ,
69
+ color: theme.onSurface.withOpacity (0.48 ),
70
+ ),
71
+ tabs: calendarData.keys.map ((String tabTitle) {
72
+ return Tab (
73
+ text:
74
+ '${tabTitle .toUpperCase ()} (${calendarData [tabTitle ]!.length })' );
75
+ }).toList (),
76
+ ),
77
+ Expanded (
78
+ child: TabBarView (
79
+ controller: _tabController,
80
+ children: calendarData.keys.map ((String tabTitle) {
81
+ return SingleChildScrollView (
82
+ child: MediaAdaptor (
83
+ mediaList: calendarData[tabTitle]! ,
84
+ type: 3 ,
85
+ isLarge: true ,
86
+ ),
87
+ );
88
+ }).toList (),
89
+ ),
90
+ ),
59
91
],
60
- )
61
- )
62
- );
92
+ )));
63
93
}
64
94
}
0 commit comments