Reputation: 291
Now I'm trying to change DB Shared Pref to SqlLite and I'm testing SqlLite DB.
TodoList Info will stored in SqlLite DB.
So, the model of Todo List is as below.
class TodoModel {
int dateTime;
String todo;
int isDone;
todoModelMap() {
var mapping = Map<String, dynamic>();
mapping['dateTime'] = this.dateTime;
mapping['todo'] = this.todo;
mapping['isDone'] = this.isDone;
return mapping;
}
}
The problem is I tried to store model in todoList Provider File but compiler calls error dateTime is null
addTodoList(DateTime dateTime, TextEditingController eventController) async {
if(eventController.text.isEmpty) { return; }
else {
if (events[dateTime] != null) {
----------------------------------------------------
todoModel.dateTime = dateTime.millisecondsSinceEpoch;
// I used milisecondsSinceEpoch to save DateTime as int.
todoModel.todo = eventController.text;
todoModel.isDone = 0;
var result = await todoService.saveTodo(todoModel);
print(result);
---------------------------------------------------
events[dateTime].add(toMap(eventController));
} else {
events[dateTime] = [toMap(eventController)];
}
eventController.clear();
save();
eventController.clear();
notifyListeners();
}
}
I cannot find why dateTime is null because over here the dateTime as int printed well..
onPressed: (){
print(controller.selectedDay.millisecondsSinceEpoch);
todoListHandler.addTodoList(controller.selectedDay, eventController);
Navigator.pop(context);
},
)
++ I want to know solution of this error
W/System.err(16005): java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.ClipData.getItemCount()' on a null object reference
this error occur when the raisedButton is onPressed. but there is no problem to store data
// Here is my full error code
W/System.err(16005): java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.ClipData.getItemCount()' on a null object reference
W/System.err(16005): at android.os.Parcel.readException(Parcel.java:1626)
W/System.err(16005): at android.os.Parcel.readException(Parcel.java:1573)
W/System.err(16005): at android.content.IClipboard$Stub$Proxy.getPrimaryClip(IClipboard.java:197)
W/System.err(16005): at android.content.ClipboardManager.getPrimaryClip(ClipboardManager.java:247)
W/System.err(16005): at io.flutter.plugin.platform.PlatformPlugin.getClipboardData(PlatformPlugin.java:274)
W/System.err(16005): at io.flutter.plugin.platform.PlatformPlugin.access$700(PlatformPlugin.java:24)
W/System.err(16005): at io.flutter.plugin.platform.PlatformPlugin$1.getClipboardData(PlatformPlugin.java:81)
W/System.err(16005): at io.flutter.embedding.engine.systemchannels.PlatformChannel$1.onMethodCall(PlatformChannel.java:141)
W/System.err(16005): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
W/System.err(16005): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/System.err(16005): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
W/System.err(16005): at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err(16005): at android.os.MessageQueue.next(MessageQueue.java:323)
W/System.err(16005): at android.os.Looper.loop(Looper.java:143)
W/System.err(16005): at android.app.ActivityThread.main(ActivityThread.java:7225)
W/System.err(16005): at java.lang.reflect.Method.invoke(Native Method)
W/System.err(16005): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
W/System.err(16005): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
D/ViewRootImpl(16005): ViewPostImeInputStage processPointer 0
D/ViewRootImpl(16005): ViewPostImeInputStage processPointer 1
I/flutter (16005): 1601380800000
E/flutter (16005): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The setter 'dateTime=' was called on null.
E/flutter (16005): Receiver: null
E/flutter (16005): Tried calling: dateTime=1601380800000
E/flutter (16005): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (16005): #1 TodoListHandler.addTodoList (package:take_a_note_project/todoList/todoList_handler.dart:57:19)
E/flutter (16005): #2 _TodoListState._showAddDialog.<anonymous closure>.<anonymous closure> (package:take_a_note_project/todoList/todoList.dart:134:33)
E/flutter (16005): #3 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19)
E/flutter (16005): #4 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1098:38)
E/flutter (16005): #5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (16005): #6 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (16005): #7 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (16005): #8 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (16005): #9 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (16005): #10 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
E/flutter (16005): #11 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (16005): #12 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (16005): #13 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (16005): #14 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (16005): #15 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (16005): #16 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (16005): #17 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (16005): #18 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (16005): #19 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (16005): #20 _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (16005): #21 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (16005): #22 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (16005): #23 _invoke1 (dart:ui/hooks.dart:267:10)
E/flutter (16005): #24 _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5)
Upvotes: 0
Views: 1904
Reputation: 1960
You have to make the object of TodoModel
first because without creating of object it is null and then also you are trying to assign it.
then you can give the value of it.
TodoModel _todoModel=new TodoModel();
_todoModel.dateTime = dateTime.millisecondsSinceEpoch;
_todoModel.todo = eventController.text;
_todoModel.isDone = 0;
var result = await todoService.saveTodo(_todoModel);
For your second error of java.lang.NullPointerException
you can refer this https://github.com/flutter/flutter/issues/24757
Upvotes: 1