Experimental flags for hot reloads, fixed (#27043) * Revert "Revert "Experimental flags for hot reloads (#26988)" (#27037)" This reverts commit cf7441983e9df7ed7172abf6d083e0c488860c5c. * Fix analysis failures
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 16b764e..679120f 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -333,6 +333,11 @@ throwToolExit('Error: --train is only allowed when running as --dynamic --profile ' '(recommended) or --debug (may include unwanted debug symbols).'); + List<String> expFlags; + if (argParser.options.containsKey(FlutterOptions.kEnableExperiment) && + argResults[FlutterOptions.kEnableExperiment] != null) { + expFlags = argResults[FlutterOptions.kEnableExperiment]; + } final List<FlutterDevice> flutterDevices = devices.map<FlutterDevice>((Device device) { return FlutterDevice( device, @@ -341,6 +346,7 @@ fileSystemRoots: argResults['filesystem-root'], fileSystemScheme: argResults['filesystem-scheme'], viewFilter: argResults['isolate-filter'], + experimentalFlags: expFlags, ); }).toList();
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart index eb584a1..82254de 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart
@@ -332,7 +332,8 @@ CompilerMessageConsumer compilerMessageConsumer = printError, String initializeFromDill, TargetModel targetModel = TargetModel.flutter, - bool unsafePackageSerialization + bool unsafePackageSerialization, + List<String> experimentalFlags, }) : assert(_sdkRoot != null), _trackWidgetCreation = trackWidgetCreation, _packagesPath = packagesPath, @@ -342,7 +343,8 @@ _stdoutHandler = _StdoutHandler(consumer: compilerMessageConsumer), _controller = StreamController<_CompilationRequest>(), _initializeFromDill = initializeFromDill, - _unsafePackageSerialization = unsafePackageSerialization { + _unsafePackageSerialization = unsafePackageSerialization, + _experimentalFlags = experimentalFlags { // This is a URI, not a file path, so the forward slash is correct even on Windows. if (!_sdkRoot.endsWith('/')) _sdkRoot = '$_sdkRoot/'; @@ -358,6 +360,7 @@ final _StdoutHandler _stdoutHandler; String _initializeFromDill; bool _unsafePackageSerialization; + final List<String> _experimentalFlags; final StreamController<_CompilationRequest> _controller; @@ -470,6 +473,10 @@ if (_unsafePackageSerialization == true) { command.add('--unsafe-package-serialization'); } + if (_experimentalFlags != null) { + final String expFlags = _experimentalFlags.join(','); + command.add('--enable-experiment=$expFlags'); + } printTrace(command.join(' ')); _server = await processManager.start(command); _server.stdout
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart index eecb057..75e8b9c 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -35,6 +35,7 @@ this.fileSystemScheme, this.viewFilter, TargetModel targetModel = TargetModel.flutter, + List<String> experimentalFlags, ResidentCompiler generator, }) : assert(trackWidgetCreation != null), generator = generator ?? ResidentCompiler( @@ -43,6 +44,7 @@ fileSystemRoots: fileSystemRoots, fileSystemScheme: fileSystemScheme, targetModel: targetModel, + experimentalFlags: experimentalFlags, ); final Device device;