@@ -39,6 +39,7 @@ class ObserverCore {
3939 visible: false ,
4040 firstChild: null ,
4141 displayingChildModelList: [],
42+ displayingChildModelMap: {},
4243 );
4344 }
4445 final scrollDirection = _obj.constraints.axis;
@@ -90,18 +91,24 @@ class ObserverCore {
9091 visible: false ,
9192 firstChild: null ,
9293 displayingChildModelList: [],
94+ displayingChildModelMap: {},
9395 );
9496 }
9597
9698 if (targetFirstChild is ! RenderIndexedSemantics ) return null ;
9799
100+ final firstDisplayingChildIndex = targetFirstChild.index;
101+ final firstDisplayingChildModel = ListViewObserveDisplayingChildModel (
102+ sliverList: _obj,
103+ viewport: viewport,
104+ index: firstDisplayingChildIndex,
105+ renderObject: targetFirstChild,
106+ );
107+ Map <int , ListViewObserveDisplayingChildModel > displayingChildModelMap = {
108+ firstDisplayingChildIndex: firstDisplayingChildModel,
109+ };
98110 List <ListViewObserveDisplayingChildModel > displayingChildModelList = [
99- ListViewObserveDisplayingChildModel (
100- sliverList: _obj,
101- viewport: viewport,
102- index: targetFirstChild.index,
103- renderObject: targetFirstChild,
104- ),
111+ firstDisplayingChildModel,
105112 ];
106113
107114 // Find the remaining children that are being displayed
@@ -123,26 +130,26 @@ class ObserverCore {
123130 displayingChild = _obj.childAfter (displayingChild);
124131 continue ;
125132 }
126- displayingChildModelList.add (ListViewObserveDisplayingChildModel (
133+
134+ final displayingChildIndex = displayingChild.index;
135+ final displayingChildModel = ListViewObserveDisplayingChildModel (
127136 sliverList: _obj,
128137 viewport: viewport,
129- index: displayingChild.index ,
138+ index: displayingChildIndex ,
130139 renderObject: displayingChild,
131- ));
140+ );
141+ displayingChildModelList.add (displayingChildModel);
142+ displayingChildModelMap[displayingChildIndex] = displayingChildModel;
132143 displayingChild = _obj.childAfter (displayingChild);
133144 }
134145
135146 return ListViewObserveModel (
136147 sliverList: _obj,
137148 viewport: viewport,
138149 visible: true ,
139- firstChild: ListViewObserveDisplayingChildModel (
140- sliverList: _obj,
141- viewport: viewport,
142- index: targetFirstChild.index,
143- renderObject: targetFirstChild,
144- ),
150+ firstChild: firstDisplayingChildModel,
145151 displayingChildModelList: displayingChildModelList,
152+ displayingChildModelMap: displayingChildModelMap,
146153 );
147154 }
148155
@@ -169,6 +176,7 @@ class ObserverCore {
169176 visible: false ,
170177 firstGroupChildList: [],
171178 displayingChildModelList: [],
179+ displayingChildModelMap: {},
172180 );
173181 }
174182 final scrollDirection = _obj.constraints.axis;
@@ -210,20 +218,26 @@ class ObserverCore {
210218 visible: false ,
211219 firstGroupChildList: [],
212220 displayingChildModelList: [],
221+ displayingChildModelMap: {},
213222 );
214223 }
215224
216225 if (targetFirstChild is ! RenderIndexedSemantics ) return null ;
217226 lastFirstGroupChildWidget = targetFirstChild;
218227
228+ final firstDisplayingChildIndex = targetFirstChild.index;
219229 final firstModel = GridViewObserveDisplayingChildModel (
220230 sliverGrid: _obj,
221231 viewport: viewport,
222- index: targetFirstChild.index ,
232+ index: firstDisplayingChildIndex ,
223233 renderObject: targetFirstChild,
224234 );
225- List <GridViewObserveDisplayingChildModel > firstGroupChildModelList = [];
226- firstGroupChildModelList.add (firstModel);
235+ Map <int , GridViewObserveDisplayingChildModel > displayingChildModelMap = {
236+ firstDisplayingChildIndex: firstModel,
237+ };
238+ List <GridViewObserveDisplayingChildModel > firstGroupChildModelList = [
239+ firstModel,
240+ ];
227241
228242 final showingChildrenMaxOffset =
229243 rawScrollViewOffset + _obj.constraints.remainingPaintExtent - overlap;
@@ -238,12 +252,15 @@ class ObserverCore {
238252 toNextOverPercent: toNextOverPercent,
239253 )) {
240254 if (targetChild is ! RenderIndexedSemantics ) break ;
241- firstGroupChildModelList.add (GridViewObserveDisplayingChildModel (
255+ final targetChildIndex = targetChild.index;
256+ final displayingChildModel = GridViewObserveDisplayingChildModel (
242257 sliverGrid: _obj,
243258 viewport: viewport,
244- index: targetChild.index ,
259+ index: targetChildIndex ,
245260 renderObject: targetChild,
246- ));
261+ );
262+ firstGroupChildModelList.add (displayingChildModel);
263+ displayingChildModelMap[targetChildIndex] = displayingChildModel;
247264 lastFirstGroupChildWidget = targetChild;
248265 }
249266
@@ -268,12 +285,15 @@ class ObserverCore {
268285 if (displayingChild is ! RenderIndexedSemantics ) {
269286 continue ;
270287 }
271- showingChildModelList.add (GridViewObserveDisplayingChildModel (
288+ final displayingChildIndex = displayingChild.index;
289+ final displayingChildModel = GridViewObserveDisplayingChildModel (
272290 sliverGrid: _obj,
273291 viewport: viewport,
274- index: displayingChild.index ,
292+ index: displayingChildIndex ,
275293 renderObject: displayingChild,
276- ));
294+ );
295+ showingChildModelList.add (displayingChildModel);
296+ displayingChildModelMap[displayingChildIndex] = displayingChildModel;
277297 }
278298 displayingChild = _obj.childAfter (displayingChild);
279299 }
@@ -284,6 +304,7 @@ class ObserverCore {
284304 visible: true ,
285305 firstGroupChildList: firstGroupChildModelList,
286306 displayingChildModelList: showingChildModelList,
307+ displayingChildModelMap: displayingChildModelMap,
287308 );
288309 }
289310}
0 commit comments