loading...

Facepalm moment of the day

thinkdigitalsoftware profile image ThinkDigitalSoftware ・1 min read

I'm developing an app in Flutter and Dart and I come across an issue where an event being added to my BLoC. (A stream-based state management solution for the uninitiated)

The state class is made up of a combination of a few different streams. When one releases an event, the state is updated with the latest updated value using a copyWith() function. This is all going fine and well until I push a null value into one of the streams and the state doesn't change. I know it was pushed successfully, but the old state is still reflected. Hopefully this will help some of you.

If your copyWith functions look like this:

State copyWith({int param1, String param2}){
  return State(
            param1: param1 ?? this.param1, 
            param2: param2 ?? this.param2
         ); 

then passing a null value will cause it to return the existing value even if you intended to set it to null. I doubt this is an issue in languages with an Undefined type, however, Dart does not have one.

Discussion

pic
Editor guide