异常"type 'String' is not a subtype of type 'int' of 'index'"



我正试图访问DocumentSnapshot中的值,据我所知,它会返回一个映射。然后,我将映射中的键存储到一个列表中,从中构建ListView。然后,我尝试通过迭代地使用映射中的键来访问这些值。尽管我得到了预期的结果,并且UI也根据需要进行了渲染,但控制台会记录一个异常,如下所示。 I/flutter ( 2093): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter ( 2093): The following assertion was thrown building: I/flutter ( 2093): type 'String' is not a subtype of type 'int' of 'index' I/flutter ( 2093): I/flutter ( 2093): Either the assertion indicates an error in the framework itself, or we should provide substantially I/flutter ( 2093): more information in this error message to help you determine and fix the underlying cause. I/flutter ( 2093): In either case, please report this assertion by filing a bug on GitHub: I/flutter ( 2093): https://github.com/flutter/flutter/issues/new?template=BUG.md I/flutter ( 2093): I/flutter ( 2093): When the exception was thrown, this was the stack: I/flutter ( 2093): #0 _CartState.cartTile.<anonymous closure> (package:zombie/screens/home/nav/tabs/cart.dart:78:71) I/flutter ( 2093): #1 SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:446:15) I/flutter ( 2093): #2 SliverMultiBoxAdaptorElement._build.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1260:67) I/flutter ( 2093): #3 _HashMap.putIfAbsent (dart:collection-patch/collection_patch.dart:139:29) I/flutter ( 2093): #4 SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:1260:26) I/flutter ( 2093): #5 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1273:55) I/flutter ( 2093): #6 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2412:19) I/flutter ( 2093): #7 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1266:11) I/flutter ( 2093): #8 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:354:23) I/flutter ( 2093): #9 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1823:58) I/flutter ( 2093): #10 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:875:15) I/flutter ( 2093): #11 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1823:13) I/flutter ( 2093): #12 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:343:5) I/flutter ( 2093): #13 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:427:5) I/flutter ( 2093): #14 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:78:12) I/flutter ( 2093): #15 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #16 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:134:11) I/flutter ( 2093): #17 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:373:11) I/flutter ( 2093): #18 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #19 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:410:13) I/flutter ( 2093): #20 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1367:12) I/flutter ( 2093): #21 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1285:20) I/flutter ( 2093): #22 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #23 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #24 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #25 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #26 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #27 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #28 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #29 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #30 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #31 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #32 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #33 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #34 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #35 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #36 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #37 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #38 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #39 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #40 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #41 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13) I/flutter ( 2093): #42 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #43 RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:259:13) I/flutter ( 2093): #44 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #45 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:744:15) I/flutter ( 2093): #46 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #47 RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:206:11) I/flutter ( 2093): #48 RenderObject.layout (package:flutter/src/rendering/object.dart:1724:7) I/flutter ( 2093): #49 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:163:11) I/flutter ( 2093): #50 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:477:7) I/flutter ( 2093): #51 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:232:7) I/flutter ( 2093): #52 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:391:14) I/flutter ( 2093): #53 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1584:7) I/flutter ( 2093): #54 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:844:18) I/flutter ( 2093): #55 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:344:19) I/flutter ( 2093): #56 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:774:13) I/flutter ( 2093): #57 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5) I/flutter ( 2093): #58 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15) I/flutter ( 2093): #59 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1041:9) I/flutter ( 2093): #60 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:957:5) I/flutter ( 2093): #64 _invoke (dart:ui/hooks.dart:259:10) I/flutter ( 2093): #65 _drawFrame (dart:ui/hooks.dart:217:3) I/flutter ( 2093): (elided 3 frames from package dart:async) I/flutter ( 2093): ════

以下是导致异常的代码的一部分

Widget cartTile(DocumentSnapshot doc) {
var snap = doc.data;
if(snap == null){
return SizedBox();
}
List<String> _keys = snap.keys.toList();
print(_keys);
return ListView.builder(
itemCount: _keys.length,
physics: BouncingScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: EdgeInsets.fromLTRB(20.0, 3.0, 20.0, 3.0),
child: Material(
elevation: 10.0,
borderRadius: BorderRadius.circular(10.0),
color: Colors.white,
child: InkWell(
borderRadius: BorderRadius.circular(10.0),
onTap: () async {
},
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0, 10.0, 0),
child: ListTile(
leading: CircleAvatar(
radius: 25,
backgroundColor: Colors.white,
backgroundImage: NetworkImage(snap[_keys[index]]['imgPath']),
),

显然,最后一行backgroundImage: NetworkImage(snap[_keys[index]]['imgPath']),是异常的原因。我试了好几个小时都没能解决。如果有任何帮助,我将不胜感激。谢谢

也许问题出在"['imgPath']"上,您是否尝试只打印snap[_keys[index]]并查看输出是否为映射?根据例外情况,对我来说似乎是一份清单…

相关内容

最新更新