diff --git a/pkgs/cronet_http/lib/src/cronet_client.dart b/pkgs/cronet_http/lib/src/cronet_client.dart
index ff13fc0..3e627a9 100644
--- a/pkgs/cronet_http/lib/src/cronet_client.dart
+++ b/pkgs/cronet_http/lib/src/cronet_client.dart
@@ -278,8 +278,8 @@
           responseInfo?.releasedBy(arena);
           responseStream = StreamController(
             onCancel: () {
-              // The user did `response.stream.cancel()`. We can just pretend that
-              // the response completed normally.
+              // The user did `response.stream.cancel()`. We can just
+              // pretend that the response completed normally.
               if (responseStreamCancelled) return;
               responseStreamCancelled = true;
               urlRequest!
@@ -398,9 +398,9 @@
             profile?.responseData.addRedirect(
               HttpProfileRedirectData(
                 statusCode: responseInfo.getHttpStatusCode(),
-                // This method is not correct for status codes 303 to 307. Cronet
-                // does not seem to have a way to get the method so we'd have to
-                // calculate it according to the rules in RFC-7231.
+                // This method is not correct for status codes 303 to 307.
+                // Cronet does not seem to have a way to get the method so
+                // we'd have to calculate it according to the rules in RFC-7231.
                 method: 'GET',
                 location: newLocationUrl!.toDartString(releaseOriginal: true),
               ),
diff --git a/pkgs/http/test/response_test.dart b/pkgs/http/test/response_test.dart
index 2a1a9e6..c4623ae 100644
--- a/pkgs/http/test/response_test.dart
+++ b/pkgs/http/test/response_test.dart
@@ -204,8 +204,8 @@
         'Hello, world!',
         200,
         headers: {
-          // ignore: missing_whitespace_between_adjacent_strings
           'set-cookie':
+              // ignore: missing_whitespace_between_adjacent_strings
               'id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT,'
               'sessionId=e8bb43229de9; Domain=foo.example.com',
         },
diff --git a/pkgs/http_profile/test/utils_test.dart b/pkgs/http_profile/test/utils_test.dart
index d3c9376..9f568a6 100644
--- a/pkgs/http_profile/test/utils_test.dart
+++ b/pkgs/http_profile/test/utils_test.dart
@@ -43,8 +43,8 @@
     test('two set-cookie, with comma in expires', () async {
       expect(
         splitHeaderValues({
-          // ignore: missing_whitespace_between_adjacent_strings
           'set-cookie':
+              // ignore: missing_whitespace_between_adjacent_strings
               'id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT,'
               'sessionId=e8bb43229de9; Domain=foo.example.com',
         }),
diff --git a/pkgs/web_socket_channel/lib/adapter_web_socket_channel.dart b/pkgs/web_socket_channel/lib/adapter_web_socket_channel.dart
index a0f0f3c..2b11e45 100644
--- a/pkgs/web_socket_channel/lib/adapter_web_socket_channel.dart
+++ b/pkgs/web_socket_channel/lib/adapter_web_socket_channel.dart
@@ -109,15 +109,16 @@
                   throw UnsupportedError('Cannot send ${obj.runtimeType}');
               }
             } on WebSocketConnectionClosed {
-              // There is nowhere to surface this error; `_controller.local.sink`
-              // has already been closed.
+              // There is nowhere to surface this error;
+              // `_controller.local.sink` has already been closed.
             }
           },
           onDone: () async {
             try {
               await webSocket.close(_localCloseCode, _localCloseReason);
             } on WebSocketConnectionClosed {
-              // It is not an error to close an already-closed `WebSocketChannel`.
+              // It is not an error to close an already-closed
+              // `WebSocketChannel`.
             }
           },
         );
diff --git a/pkgs/web_socket_channel/lib/html.dart b/pkgs/web_socket_channel/lib/html.dart
index d12109c..83c3d07 100644
--- a/pkgs/web_socket_channel/lib/html.dart
+++ b/pkgs/web_socket_channel/lib/html.dart
@@ -157,8 +157,8 @@
       (obj) => innerWebSocket.send(obj!.jsify()!),
       onDone: () {
         // On Chrome and possibly other browsers, `null` can't be passed as the
-        // default here. The actual arity of the function call must be correct or
-        // it will fail.
+        // default here. The actual arity of the function call must be
+        // correct or it will fail.
         if ((_localCloseCode, _localCloseReason) case (
           final closeCode?,
           final closeReason?,
diff --git a/pkgs/web_socket_channel/test/html_test.dart b/pkgs/web_socket_channel/test/html_test.dart
index d772cf8..034a540 100644
--- a/pkgs/web_socket_channel/test/html_test.dart
+++ b/pkgs/web_socket_channel/test/html_test.dart
@@ -181,8 +181,8 @@
       }
     ''');
 
-      // TODO(nweiz): Make this channel use a port number that's guaranteed to be
-      // invalid.
+      // TODO(nweiz): Make this channel use a port number that's
+      // guaranteed to be invalid.
       final channel = HtmlWebSocketChannel.connect(
         'ws://localhost:${await serverChannel.firstAsInt}',
       );
diff --git a/pkgs/web_socket_channel/test/io_test.dart b/pkgs/web_socket_channel/test/io_test.dart
index 92f98b3..a78fbbb 100644
--- a/pkgs/web_socket_channel/test/io_test.dart
+++ b/pkgs/web_socket_channel/test/io_test.dart
@@ -228,9 +228,10 @@
         .transform(
           StreamTransformer<HttpRequest, HttpRequest>.fromHandlers(
             handleData: (data, sink) {
-              // Wait before we handle this request, to give the timeout a chance to
-              // kick in. We still want to make sure that we handle the request
-              // afterwards to not have false positives with the timeout
+              // Wait before we handle this request, to give the timeout a
+              // chance to kick in. We still want to make sure that we handle
+              // the request afterwards to not have false positives with the
+              // timeout
               Timer(const Duration(milliseconds: 800), () {
                 sink.add(data);
               });
