[flutter_tools] support starting in canvaskit with FLUTTER_WEB_USE_SKIA=true (#60708)

diff --git a/packages/flutter_tools/lib/src/build_runner/devfs_web.dart b/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
index abc8cc7..3a6d024 100644
--- a/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
+++ b/packages/flutter_tools/lib/src/build_runner/devfs_web.dart
@@ -660,6 +660,9 @@
       expressionCompiler,
       testMode: testMode,
     );
+    if (buildInfo.dartDefines.contains('FLUTTER_WEB_USE_SKIA=true')) {
+      webAssetServer.canvasKitRendering = true;
+    }
     if (hostname == 'any') {
       _baseUri = Uri.http('localhost:$port', '');
     } else {
diff --git a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
index 3937b7d..46477e7 100644
--- a/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
+++ b/packages/flutter_tools/test/general.shard/web/devfs_web_test.dart
@@ -486,7 +486,9 @@
     expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
 
     // Toggle CanvasKit
+    expect(webDevFS.webAssetServer.canvasKitRendering, false);
     webDevFS.webAssetServer.canvasKitRendering = true;
+
     expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'OL');
     expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'CHUM');
 
@@ -650,6 +652,55 @@
     expect(uri, Uri.http('localhost:0', ''));
     await webDevFS.destroy();
   }));
+
+  test('Can start web server with canvaskit enabled', () => testbed.run(() async {
+    globals.fs.file('.packages').writeAsStringSync('\n');
+    final File outputFile = globals.fs.file(globals.fs.path.join('lib', 'main.dart'))
+      ..createSync(recursive: true);
+    outputFile.parent.childFile('a.sources').writeAsStringSync('');
+    outputFile.parent.childFile('a.json').writeAsStringSync('{}');
+    outputFile.parent.childFile('a.map').writeAsStringSync('{}');
+    outputFile.parent.childFile('.packages').writeAsStringSync('\n');
+
+    final ResidentCompiler residentCompiler = MockResidentCompiler();
+    when(residentCompiler.recompile(
+      any,
+      any,
+      outputPath: anyNamed('outputPath'),
+      packageConfig: anyNamed('packageConfig'),
+    )).thenAnswer((Invocation invocation) async {
+      return const CompilerOutput('a', 0, <Uri>[]);
+    });
+
+    final WebDevFS webDevFS = WebDevFS(
+      hostname: 'localhost',
+      port: 0,
+      packagesFilePath: '.packages',
+      urlTunneller: null,
+      useSseForDebugProxy: true,
+      buildInfo: const BuildInfo(
+        BuildMode.debug,
+        '',
+        treeShakeIcons: false,
+        dartDefines: <String>[
+          'FLUTTER_WEB_USE_SKIA=true',
+        ]
+      ),
+      enableDwds: false,
+      entrypoint: Uri.base,
+      testMode: true,
+      expressionCompiler: null,
+      chromiumLauncher: null,
+    );
+    webDevFS.requireJS.createSync(recursive: true);
+    webDevFS.stackTraceMapper.createSync(recursive: true);
+
+    await webDevFS.create();
+
+    expect(webDevFS.webAssetServer.canvasKitRendering, true);
+
+    await webDevFS.destroy();
+  }));
 }
 
 class MockHttpServer extends Mock implements HttpServer {}