StandardMessageCodec class
MessageCodec using the Flutter standard binary encoding.
Supported messages are acyclic values of these forms:
- null
- bools
- nums
- Strings
- Uint8Lists, Int32Lists, Int64Lists, Float64Lists
- Lists of supported values
- Maps from supported values to supported values
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
Constructors
- StandardMessageCodec()
-
Creates a MessageCodec using the Flutter standard binary encoding.
const
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
decodeMessage(
ByteData? message) → dynamic -
Decodes the specified
message
from binary.override -
encodeMessage(
Object? message) → ByteData? -
Encodes the specified
message
in binary.override -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
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
frombuffer
. -
toString(
) → String -
A string representation of this object.
inherited
-
writeSize(
WriteBuffer buffer, int value) → void -
Writes a non-negative 32-bit integer
value
tobuffer
using an expanding 1-5 byte encoding that optimizes for small values. -
writeValue(
WriteBuffer buffer, Object? value) → void -
Writes
value
tobuffer
by first writing a type discriminator byte, then the value itself.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited