@@ -31,16 +31,14 @@ class TabsControl extends StatefulWidget {
31
31
class _TabsControlState extends State <TabsControl >
32
32
with TickerProviderStateMixin {
33
33
List <String > _tabsIndex = [];
34
- String ? _value;
35
34
TabController ? _tabController;
35
+ int _selectedIndex = 0 ;
36
36
dynamic _dispatch;
37
37
38
38
@override
39
39
void initState () {
40
40
super .initState ();
41
- _tabsIndex = widget.children
42
- .map ((c) => c.attrString ("key" ) ?? c.attrString ("text" , "" )! )
43
- .toList ();
41
+ _tabsIndex = widget.children.map ((c) => c.id).toList ();
44
42
_tabController = TabController (
45
43
length: _tabsIndex.length,
46
44
animationDuration: Duration (
@@ -53,34 +51,31 @@ class _TabsControlState extends State<TabsControl>
53
51
if (_tabController! .indexIsChanging == true ) {
54
52
return ;
55
53
}
56
- var value = _tabsIndex[ _tabController! .index] ;
57
- if (_value != value ) {
58
- debugPrint ("Selected tab : $value " );
54
+ var index = _tabController! .index;
55
+ if (_selectedIndex != index ) {
56
+ debugPrint ("Selected index : $index " );
59
57
List <Map <String , String >> props = [
60
- {"i" : widget.control.id, "value " : value }
58
+ {"i" : widget.control.id, "selectedindex " : index. toString () }
61
59
];
62
60
_dispatch (
63
61
UpdateControlPropsAction (UpdateControlPropsPayload (props: props)));
64
62
ws.updateControlProps (props: props);
65
63
ws.pageEventFromWeb (
66
64
eventTarget: widget.control.id,
67
65
eventName: "change" ,
68
- eventData: value);
66
+ eventData: index.toString ());
67
+ _selectedIndex = index;
69
68
}
70
- _value = value;
71
69
}
72
70
73
71
@override
74
72
Widget build (BuildContext context) {
75
73
debugPrint ("TabsControl build: ${widget .control .id }" );
76
74
77
- var tabsIndex = widget.children
78
- .map ((c) => c.attrString ("key" ) ?? c.attrString ("text" , "" )! )
79
- .toList ();
75
+ var tabsIndex = widget.children.map ((c) => c.id).toList ();
80
76
if (tabsIndex.length != _tabsIndex.length ||
81
77
! tabsIndex.every ((item) => _tabsIndex.contains (item))) {
82
- _tabsIndex =
83
- widget.children.map ((c) => c.attrString ("key" , "" )! ).toList ();
78
+ _tabsIndex = tabsIndex;
84
79
_tabController = TabController (
85
80
length: _tabsIndex.length,
86
81
animationDuration: Duration (
@@ -91,14 +86,13 @@ class _TabsControlState extends State<TabsControl>
91
86
92
87
bool disabled = widget.control.isDisabled || widget.parentDisabled;
93
88
94
- String ? value = widget.control.attrString ("value" );
95
- if (_value != value) {
96
- _value = value;
89
+ var selectedIndex = widget.control.attrInt ("selectedIndex" , 0 )! ;
97
90
98
- int idx = _tabsIndex.indexOf (_value ?? "" );
99
- if (idx != - 1 ) {
100
- _tabController! .index = idx;
101
- }
91
+ if (selectedIndex > - 1 &&
92
+ selectedIndex < tabsIndex.length &&
93
+ _selectedIndex != selectedIndex) {
94
+ _selectedIndex = selectedIndex;
95
+ _tabController! .index = selectedIndex;
102
96
}
103
97
104
98
var tabs = StoreConnector <AppState , ControlsViewModel >(
0 commit comments