22// Use of this source code is governed by a BSD-style license that can be
33// found in the LICENSE file.
44
5- // @dart = 2.6
5+ // @dart = 2.9
6+
67part of dart.ui;
78
89/// A saved platform message for a channel with its callback.
@@ -14,12 +15,12 @@ class _StoredMessage {
1415 _StoredMessage (this ._data, this ._callback);
1516
1617 /// Representation of the message's payload.
17- final ByteData /*?*/ _data;
18- ByteData /*?*/ get data => _data;
18+ final ByteData ? _data;
19+ ByteData ? get data => _data;
1920
2021 /// Callback to be called when the message is received.
21- final PlatformMessageResponseCallback /*!*/ _callback;
22- PlatformMessageResponseCallback /*!*/ get callback => _callback;
22+ final PlatformMessageResponseCallback _callback;
23+ PlatformMessageResponseCallback get callback => _callback;
2324}
2425
2526/// A fixed-size circular queue.
@@ -43,7 +44,7 @@ class _RingBuffer<T> {
4344
4445 /// A callback that get's called when items are ejected from the [_RingBuffer]
4546 /// by way of an overflow or a resizing.
46- Function (T ) _dropItemCallback;
47+ Function (T )? _dropItemCallback;
4748 set dropItemCallback (Function (T ) callback) {
4849 _dropItemCallback = callback;
4950 }
@@ -60,7 +61,7 @@ class _RingBuffer<T> {
6061 }
6162
6263 /// Returns null when empty.
63- T pop () {
64+ T ? pop () {
6465 return _queue.isEmpty ? null : _queue.removeFirst ();
6566 }
6667
@@ -70,9 +71,7 @@ class _RingBuffer<T> {
7071 int result = 0 ;
7172 while (_queue.length > lengthLimit) {
7273 final T item = _queue.removeFirst ();
73- if (_dropItemCallback != null ) {
74- _dropItemCallback (item);
75- }
74+ _dropItemCallback? .call (item);
7675 result += 1 ;
7776 }
7877 return result;
@@ -86,7 +85,7 @@ class _RingBuffer<T> {
8685}
8786
8887/// Signature for [ChannelBuffers.drain] .
89- typedef DrainChannelCallback = Future <void >/*!*/ Function (ByteData /*?*/ , PlatformMessageResponseCallback /*!*/ );
88+ typedef DrainChannelCallback = Future <void > Function (ByteData ? , PlatformMessageResponseCallback );
9089
9190/// Storage of channel messages until the channels are completely routed,
9291/// i.e. when a message handler is attached to the channel on the framework side.
@@ -116,8 +115,8 @@ class ChannelBuffers {
116115 static const String kControlChannelName = 'dev.flutter/channel-buffers' ;
117116
118117 /// A mapping between a channel name and its associated [_RingBuffer] .
119- final Map <String , _RingBuffer <_StoredMessage >> _messages =
120- < String , _RingBuffer <_StoredMessage >> {};
118+ final Map <String , _RingBuffer <_StoredMessage >? > _messages =
119+ < String , _RingBuffer <_StoredMessage >? > {};
121120
122121 _RingBuffer <_StoredMessage > _makeRingBuffer (int size) {
123122 final _RingBuffer <_StoredMessage > result = _RingBuffer <_StoredMessage >(size);
@@ -130,8 +129,8 @@ class ChannelBuffers {
130129 }
131130
132131 /// Returns true on overflow.
133- bool /*!*/ push (String /*!*/ channel, ByteData /*?*/ data, PlatformMessageResponseCallback /*!*/ callback) {
134- _RingBuffer <_StoredMessage > queue = _messages[channel];
132+ bool push (String channel, ByteData ? data, PlatformMessageResponseCallback callback) {
133+ _RingBuffer <_StoredMessage >? queue = _messages[channel];
135134 if (queue == null ) {
136135 queue = _makeRingBuffer (kDefaultBufferSize);
137136 _messages[channel] = queue;
@@ -150,23 +149,23 @@ class ChannelBuffers {
150149 }
151150
152151 /// Returns null on underflow.
153- _StoredMessage _pop (String channel) {
154- final _RingBuffer <_StoredMessage > queue = _messages[channel];
155- final _StoredMessage result = queue? .pop ();
152+ _StoredMessage ? _pop (String channel) {
153+ final _RingBuffer <_StoredMessage >? queue = _messages[channel];
154+ final _StoredMessage ? result = queue? .pop ();
156155 return result;
157156 }
158157
159158 bool _isEmpty (String channel) {
160- final _RingBuffer <_StoredMessage > queue = _messages[channel];
161- return ( queue == null ) ? true : queue.isEmpty;
159+ final _RingBuffer <_StoredMessage >? queue = _messages[channel];
160+ return queue == null || queue.isEmpty;
162161 }
163162
164163 /// Changes the capacity of the queue associated with the given channel.
165164 ///
166165 /// This could result in the dropping of messages if newSize is less
167166 /// than the current length of the queue.
168167 void _resize (String channel, int newSize) {
169- _RingBuffer <_StoredMessage > queue = _messages[channel];
168+ _RingBuffer <_StoredMessage >? queue = _messages[channel];
170169 if (queue == null ) {
171170 queue = _makeRingBuffer (newSize);
172171 _messages[channel] = queue;
@@ -182,9 +181,9 @@ class ChannelBuffers {
182181 ///
183182 /// This should be called once a channel is prepared to handle messages
184183 /// (i.e. when a message handler is setup in the framework).
185- Future <void >/*!*/ drain (String /*!*/ channel, DrainChannelCallback /*!*/ callback) async {
184+ Future <void > drain (String channel, DrainChannelCallback callback) async {
186185 while (! _isEmpty (channel)) {
187- final _StoredMessage message = _pop (channel);
186+ final _StoredMessage message = _pop (channel)! ;
188187 await callback (message.data, message.callback);
189188 }
190189 }
@@ -204,7 +203,7 @@ class ChannelBuffers {
204203 /// Arity: 2
205204 /// Format: `resize\r<channel name>\r<new size>`
206205 /// Description: Allows you to set the size of a channel's buffer.
207- void handleMessage (ByteData /*!*/ data) {
206+ void handleMessage (ByteData data) {
208207 final List <String > command = _getString (data).split ('\r ' );
209208 if (command.length == /*arity=*/ 2 + 1 && command[0 ] == 'resize' ) {
210209 _resize (command[1 ], int .parse (command[2 ]));
@@ -220,4 +219,4 @@ class ChannelBuffers {
220219///
221220/// See also:
222221/// * [BinaryMessenger] - The place where ChannelBuffers are typically read.
223- final ChannelBuffers /*!*/ channelBuffers = ChannelBuffers ();
222+ final ChannelBuffers channelBuffers = ChannelBuffers ();
0 commit comments