Reputation: 25
I'm new to Flutter and I am getting this error: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ The following _CastError was thrown building: Null check operator used on a null value. I'm working with a Sqlite database and I'm trying to put the Title in a listview. At the end of the stack also I'm getting this response:
Another exception was thrown: Null check operator used on a null value The Stack:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following _CastError was thrown building:
Null check operator used on a null value
When the exception was thrown, this was the stack:
#0 _MedicineListState.build.<anonymous closure>.<anonymous closure> (package:medicine_box/screens/medicine_list.dart:28:46)
#1 SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:487:22)
#2 SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:1422:28)
#3 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1436:55)
#4 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2682:19)
#5 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1428:12)
#6 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:353:23)
#7 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2300:59)
#8 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1056:15)
#9 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2300:14)
#10 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:342:5)
#11 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:428:5)
#12 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:79:12)
#13 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#14 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:149:12)
#15 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:386:11)
#16 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#17 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:550:13)
#18 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1634:12)
#19 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1541:20)
#20 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#21 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#22 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#23 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#24 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#25 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#26 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#27 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#28 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#29 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#30 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#31 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#32 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#33 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#34 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#35 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#36 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#37 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#38 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#39 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#40 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#41 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#42 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#43 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#44 RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:552:11)
#45 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#46 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#47 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#48 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#49 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#50 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11)
#51 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:903:45)
#52 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:938:32)
#53 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#54 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#55 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
#56 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1080:7)
#57 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#58 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:410:14)
#59 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#60 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#61 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#62 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#63 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#64 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#65 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1467:11)
#66 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#67 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#68 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#69 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#70 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#71 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#72 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#73 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#74 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#75 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#76 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#77 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#78 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#79 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#80 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#81 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#82 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#83 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#84 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#85 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#86 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#87 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#88 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#89 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#90 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#91 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#92 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#93 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#94 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#95 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3813:14)
#96 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#97 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#98 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14)
#99 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7)
#100 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11)
#101 _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:856:15)
#102 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2027:7)
#103 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1020:18)
#104 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:516:19)
#105 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:865:13)
#106 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:381:5)
#107 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1289:15)
#108 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1218:9)
#109 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1076:5)
#110 _invoke (dart:ui/hooks.dart:145:13)
#111 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#112 _drawFrame (dart:ui/hooks.dart:112:31)
════════════════════════════════════════════════════════════════════════════════════════════════════
Here is the code:
Expanded(
child: FutureBuilder<List<MedicineModel>?>(
future: DBProvider.db.getAllMedicines(),
builder: (_, snapshot) {
return ListView.builder(
itemCount: snapshot.data?.length,
itemBuilder: (context, index) => ListTile(
title: Text(
snapshot.data![index].medicineName,
),
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(
snapshot.data![index].medicineName),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadiusDirectional.circular(
10)),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
const Text('Component: '),
const SizedBox(
width: 5,
),
Text(snapshot
.data![index].drugName),
],
),
const SizedBox(
height: 3,
),
Row(
children: [
const Text('Expiration Date: '),
const SizedBox(
width: 5,
),
Text(snapshot
.data![index].expirationDate),
],
),
Row(
children: [
const Text('Indication: '),
const SizedBox(
width: 5,
),
Text(snapshot
.data![index].indication),
],
)
],
),
actions: [
TextButton(
onPressed: () =>
Navigator.pop(context),
child: const Text(
'Ok',
textAlign: TextAlign.center,
))
],
);
},
);
},
trailing: OutlinedButton(
onPressed: () async {
DBProvider.db.deleteMedicine(index);
},
child: const Icon(
Icons.delete,
size: 30,
color: Colors.deepPurple,
),
),
));
}))
The error is in this line:
title: Text(
snapshot.data![index].medicineName,
)
I have explored some question like teh response ofCopsOnRoad but I dont now how to solve this and how to apply in my code. Thank you
Upvotes: 0
Views: 3886
Reputation: 416
It will help to read and follow the examples in flutter documentation. Here's the documentation for FutureBuilder.
The issue is that ! is a null-check so it'll throw the exception when "Null check operator used on a null value" as it says. An easy fix is making sure that the snapshot has data before using it, and you can do it like so:
Expanded(
child: FutureBuilder<List<MedicineModel>?>(
future: DBProvider.db.getAllMedicines(),
builder: (_, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
... // your original code
)
} else {
return Text("Loading"); // whatever you want here
}
})
The documentation has a better example so take a look at that when you have time.
Upvotes: 1