diff --git a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle.dart b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle.dart
index eea9727..81a6300 100644
--- a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle.dart
+++ b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle.dart
@@ -31,7 +31,8 @@
 
   @override
   bool operator ==(Object other) {
-    return other is Handle && other.handle == handle;
+    return other is Handle
+        && other.handle == handle;
   }
 
   @override
diff --git a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle_disposition.dart b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle_disposition.dart
index 77b48ce..a3ce43b 100644
--- a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle_disposition.dart
+++ b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/handle_disposition.dart
@@ -15,8 +15,7 @@
   }
 
   @pragma('vm:external-name', 'HandleDisposition_constructor')
-  external void _constructor(
-      int operation, Handle handle, int type, int rights);
+  external void _constructor(int operation, Handle handle, int type, int rights);
 
   @pragma('vm:external-name', 'HandleDisposition_operation')
   external int get operation;
diff --git a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/system.dart b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/system.dart
index 2b3a450..ccf1b69 100644
--- a/shell/platform/fuchsia/dart-pkg/zircon/lib/src/system.dart
+++ b/shell/platform/fuchsia/dart-pkg/zircon/lib/src/system.dart
@@ -80,8 +80,7 @@
   List<Handle> get handles => _handles!;
 
   @pragma('vm:entry-point')
-  const ReadResult(final int status,
-      [this._bytes, this._numBytes, this._handles])
+  const ReadResult(final int status, [this._bytes, this._numBytes, this._handles])
       : super(status);
 
   /// Returns the bytes as a Uint8List. If status != OK this will throw
@@ -110,7 +109,8 @@
   const HandleInfo(this.handle, this.type, this.rights);
 
   @override
-  String toString() => 'HandleInfo(handle=$handle, type=$type, rights=$rights)';
+  String toString() =>
+      'HandleInfo(handle=$handle, type=$type, rights=$rights)';
 }
 
 @pragma('vm:entry-point')
@@ -124,8 +124,7 @@
   List<HandleInfo> get handleInfos => _handleInfos!;
 
   @pragma('vm:entry-point')
-  const ReadEtcResult(final int status,
-      [this._bytes, this._numBytes, this._handleInfos])
+  const ReadEtcResult(final int status, [this._bytes, this._numBytes, this._handleInfos])
       : super(status);
 
   /// Returns the bytes as a Uint8List. If status != OK this will throw
@@ -206,11 +205,9 @@
   @pragma('vm:external-name', 'System_ConnectToService')
   external static int connectToService(String path, Handle channel);
   @pragma('vm:external-name', 'System_ChannelWrite')
-  external static int channelWrite(
-      Handle channel, ByteData data, List<Handle> handles);
+  external static int channelWrite(Handle channel, ByteData data, List<Handle> handles);
   @pragma('vm:external-name', 'System_ChannelWriteEtc')
-  external static int channelWriteEtc(Handle channel, ByteData data,
-      List<HandleDisposition> handleDispositions);
+  external static int channelWriteEtc(Handle channel, ByteData data, List<HandleDisposition> handleDispositions);
   @pragma('vm:external-name', 'System_ChannelQueryAndRead')
   external static ReadResult channelQueryAndRead(Handle channel);
   @pragma('vm:external-name', 'System_ChannelQueryAndReadEtc')
@@ -224,8 +221,7 @@
   @pragma('vm:external-name', 'System_SocketCreate')
   external static HandlePairResult socketCreate([int options = 0]);
   @pragma('vm:external-name', 'System_SocketWrite')
-  external static WriteResult socketWrite(
-      Handle socket, ByteData data, int options);
+  external static WriteResult socketWrite(Handle socket, ByteData data, int options);
   @pragma('vm:external-name', 'System_SocketRead')
   external static ReadResult socketRead(Handle socket, int size);
 
@@ -258,7 +254,5 @@
   external static int _nativeClockGetMonotonic();
 
   // TODO(edcoyne): Remove this, it is required to safely do an API transition across repos.
-  static int reboot() {
-    return -2; /*ZX_ERR_NOT_SUPPORTED*/
-  }
+  static int reboot() { return -2; /*ZX_ERR_NOT_SUPPORTED*/ }
 }
