Мой ListView.builder потерпел крах, когда достиг моей второй стороны поднятия элемента: MISSING error. Мой виджет находится в другом виджете с состоянием, который отображается на моем главном экране. Этот метод получает данные из магазина и отображает их с индикатором refre sh в конце. Если нет inte rnet, мой streambuilder загружает кэшированные данные, которые хранятся в списке. Мой виджет allNews () прикреплен к телу в скаффолде этого класса. вот мой код:
Widget allNews() {
return StreamBuilder(
stream: databaseReference
.collection("posts")
.where('isaccepting', isEqualTo: true)
.orderBy('date', descending: true)
.limit(10 + feed.length)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return FutureBuilder(
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator(strokeWidth: 2.0,);
} else {
return new ListView.builder(
itemCount: feed.length,
itemBuilder: (_, index) {
return
Post(
context,
appliedPeople,
feed[index]['uid'].toString(),
feed[index]['type'].toString(),
);
},
);
}
},
);
} else {
List<DocumentSnapshot> item = snapshot.data.documents;
for (int i = 0; i < snapshot.data.documents.length; i++) {
databaseReference
.collection('posts')
.document(item[i].documentID)
.updateData({'gigID': item[i].documentID});
}
return new RefreshIndicator(
child: ListView.builder(
controller: controller,
itemCount: _data.length + 1,
itemBuilder: (_, int index) {
if (index < _data.length) {
final DocumentSnapshot ds = _data[index];
return
Post(
context,
ds['uid'].toString(),
ds['type'].toString(),
);
}else
return Center(
child: new Opacity(
opacity: _isLoading ? 1.0 : 0.0,
child: new SizedBox(
width: 32.0,
height: 32.0,
child: new CircularProgressIndicator(strokeWidth: 2.0)),
),
);
}),
onRefresh: () async {
_data.clear();
_lastVisible = null;
await _getData();
},
);
}
},
);
}
журнал ошибок показывает это:
'' '
════════ Exception caught by rendering library ═════════════════════════════════
'package:flutter/src/rendering/object.dart': Failed assertion: line 1651 pos 12: '!_debugDoingThisLayout': is not true.
The relevant error-causing widget was
ListView
lib\…\HomeHelpers\Feed.dart:698
════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by rendering library ═════════════════════════════════
'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 549 pos 12: 'child.hasSize': is not true.
The relevant error-causing widget was
ListView
lib\…\HomeHelpers\Feed.dart:698
════════════════════════════════════════════════════════════════════════════════
D/ViewRootImpl@16abb27[MainActivity]( 5794): ViewPostIme pointer 0
E/flutter ( 5794): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Cannot hit test a render box that has never been laid out.
E/flutter ( 5794): The hitTest() method was called on this RenderBox: RenderIndexedSemantics#05f19 relayoutBoundary=up3 NEEDS-LAYOUT NEEDS-PAINT:
E/flutter ( 5794): needs compositing
E/flutter ( 5794): creator: IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ← KeyedSubtree ← SliverList ← MediaQuery ← SliverPadding ← Viewport ← IgnorePointer-[GlobalKey#0b98a] ← Semantics ← _PointerListener ← ⋯
E/flutter ( 5794): parentData: index=2; layoutOffset=902.0 (can use size)
E/flutter ( 5794): constraints: BoxConstraints(w=360.0, 0.0<=h<=Infinity)
E/flutter ( 5794): semantic boundary
E/flutter ( 5794): size: MISSING
E/flutter ( 5794): index: 2
E/flutter ( 5794): Unfortunately, this object's geometry is not known at this time, probably because it has never been laid out. This means it cannot be accurately hit-tested.
flutter ( 5794): If you are trying to perform a hit test during the layout phase itself, make sure you only hit test nodes that have completed layout (e.g. the node's children, after their layout() method has been called).
E/flutter ( 5794): #0 RenderBox.hitTest.<anonymous closure>
package:flutter/…/rendering/box.dart:2102
E/flutter ( 5794): #1 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2133
E/flutter ( 5794): #2 RenderSliverHelpers.hitTestBoxChild.<anonymous closure>
package:flutter/…/rendering/sliver.dart:1654
E/flutter ( 5794): #3 BoxHitTestResult.addWithRawTransform
package:flutter/…/rendering/box.dart:801
E/flutter ( 5794): #4 BoxHitTestResult.addWithPaintOffset
package:flutter/…/rendering/box.dart:758
E/flutter ( 5794): #5 RenderSliverHelpers.hitTestBoxChild
package:flutter/…/rendering/sliver.dart:1650
E/flutter ( 5794): #6 RenderSliverMultiBoxAdaptor.hitTestChildren
package:flutter/…/rendering/sliver_multi_box_adaptor.dart:564
E/flutter ( 5794): #7 RenderSliver.hitTest
package:flutter/…/rendering/sliver.dart:1269
E/flutter ( 5794): #8 SliverHitTestResult.addWithAxisOffset
package:flutter/…/rendering/sliver.dart:844
E/flutter ( 5794): #9 RenderSliverEdgeInsetsPadding.hitTestChildren
package:flutter/…/rendering/sliver_padding.dart:219
E/flutter ( 5794): #10 RenderSliver.hitTest
package:flutter/…/rendering/sliver.dart:1269
E/flutter ( 5794): #11 RenderViewportBase.hitTestChildren.<anonymous closure>
package:flutter/…/rendering/viewport.dart:589
E/flutter ( 5794): #12 BoxHitTestResult.addWithRawTransform
package:flutter/…/rendering/box.dart:801
E/flutter ( 5794): #13 BoxHitTestResult.addWithPaintTransform
package:flutter/…/rendering/box.dart:729
E/flutter ( 5794): #14 RenderViewportBase.hitTestChildren
package:flutter/…/rendering/viewport.dart:585
E/flutter ( 5794): #15 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #16 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #17 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #18 RenderIgnorePointer.hitTest
package:flutter/…/rendering/proxy_box.dart:3064
E/flutter ( 5794): #19 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #20 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #21 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #22 RenderProxyBoxWithHitTestBehavior.hitTest
package:flutter/…/rendering/proxy_box.dart:161
E/flutter ( 5794): #23 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #24 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #25 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #26 RenderProxyBoxWithHitTestBehavior.hitTest
package:flutter/…/rendering/proxy_box.dart:161
E/flutter ( 5794): #27 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #28 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #29 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
E/flutter ( 5794): #30 RenderBox.hitTest
package:flutter/…/rendering/box.dart:2135
E/flutter ( 5794): #31 RenderProxyBoxMixin.hitTestChildren
package:flutter/…/rendering/proxy_box.dart:114
D/ViewRootImpl@16abb27[MainActivity]( 5794): ViewPostIme pointer 1
V/InputMethodManager( 5794): Starting input: tba=android.view.inputmethod.EditorInfo@e7f56e9 nm : com.jobs.freelance.gigs.gigs_ethiopia ic=null
I/InputMethodManager( 5794): startInputInner - mService.startInputOrWindowGainedFocus
D/SurfaceView( 5794): BG show() Surface(name=Background for - SurfaceView - com.jobs.freelance.gigs.gigs_ethiopia/com.jobs.freelance.gigs.gigs_ethiopia.MainActivity@c83afbe@1) io.flutter.embedding.android.FlutterSurfaceView{c83afbe V.E...... ........ 0,0-1080,1920}
D/SurfaceView( 5794): surfaceDestroyed 1 io.flutter.embedding.android.FlutterSurfaceView{c83afbe V.E...... ........ 0,0-1080,1920}
D/FlutterView( 5794): Detaching from a FlutterEngine: io.flutter.embedding.engine.FlutterEngine@9e64f7d
V/InputMethodManager( 5794): Starting input: tba=android.view.inputmethod.EditorInfo@1d0e60f nm : com.jobs.freelance.gigs.gigs_ethiopia ic=null
I/InputMethodManager( 5794): startInputInner - mService.startInputOrWindowGainedFocus
D/ViewRootImpl@16abb27[MainActivity]( 5794): performDraw() was skipped by AOD_SHOW_STATE... DisplayState=3
D/ViewRootImpl@16abb27[MainActivity]( 5794): MSG_WINDOW_FOCUS_CHANGED 0
D/SurfaceView( 5794): BG show() Surface(name=Background for - SurfaceView - com.jobs.freelance.gigs.gigs_ethiopia/com.jobs.freelance.gigs.gigs_ethiopia.MainActivity@c83afbe@1) io.flutter.embedding.android.FlutterSurfaceView{c83afbe V.E...... .......D 0,0-1080,1920}
D/OpenGLRenderer( 5794): eglDestroySurface = 0x707f4f1bd0
D/ViewRootImpl@16abb27[MainActivity]( 5794): Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x5 surface={valid=false 0} changed=true'''