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
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.