StandardMessageCodec class Null safety

MessageCodec using the Flutter standard binary encoding.

Supported messages are acyclic values of these forms:

Decoded values will use List<Object?> and Map<Object?, Object?> irrespective of content.

The type returned from decodeMessage is dynamic (not Object?), which means no type checking is performed on its return value. It is strongly recommended that the return value be immediately cast to a known type to prevent runtime errors due to typos that the type checker could otherwise catch.

The codec is extensible by subclasses overriding writeValue and readValueOfType.

Android specifics

On Android, messages are represented as follows:

  • null: null
  • bool: java.lang.Boolean
  • int: java.lang.Integer for values that are representable using 32-bit two's complement; java.lang.Long otherwise
  • double: java.lang.Double
  • String: java.lang.String
  • Uint8List: byte[]
  • Int32List: int[]
  • Int64List: long[]
  • Float64List: double[]
  • List: java.util.ArrayList
  • Map: java.util.HashMap

When sending a java.math.BigInteger from Java, it is converted into a String with the hexadecimal representation of the integer. (The value is tagged as being a big integer; subclasses of this class could be made to support it natively; see the discussion at writeValue.) This codec does not support sending big integers from Dart.

iOS specifics

On iOS, messages are represented as follows:

  • null: nil
  • bool: NSNumber numberWithBool:
  • int: NSNumber numberWithInt: for values that are representable using 32-bit two's complement; NSNumber numberWithLong: otherwise
  • double: NSNumber numberWithDouble:
  • String: NSString
  • Uint8List, Int32List, Int64List, Float64List: FlutterStandardTypedData
  • List: NSArray
  • Map: NSDictionary
Implemented types


Creates a MessageCodec using the Flutter standard binary encoding.


hashCode int
The hash code for this object.
runtimeType Type
A representation of the runtime type of the object.


decodeMessage(ByteData? message) → dynamic
Decodes the specified message from binary.
encodeMessage(Object? message) ByteData?
Encodes the specified message in binary.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
readSize(ReadBuffer buffer) int
Reads a non-negative int from buffer as written by writeSize.
readValue(ReadBuffer buffer) Object?
Reads a value from buffer as written by writeValue.
readValueOfType(int type, ReadBuffer buffer) Object?
Reads a value of the indicated type from buffer.
toString() String
A string representation of this object.
writeSize(WriteBuffer buffer, int value) → void
Writes a non-negative 32-bit integer value to buffer using an expanding 1-5 byte encoding that optimizes for small values.
writeValue(WriteBuffer buffer, Object? value) → void
Writes value to buffer by first writing a type discriminator byte, then the value itself.


operator ==(Object other) bool
The equality operator.