Reland: use flutter features for web and desktop (#36699)
diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart
index e5a6659..9919e65 100644
--- a/packages/flutter_tools/lib/src/commands/assemble.dart
+++ b/packages/flutter_tools/lib/src/commands/assemble.dart
@@ -30,8 +30,6 @@
@override
String get name => 'assemble';
- @override
- bool get isExperimental => true;
@override
Future<FlutterCommandResult> runCommand() {
@@ -127,9 +125,6 @@
String get name => 'run';
@override
- bool get isExperimental => true;
-
- @override
Future<FlutterCommandResult> runCommand() async {
final BuildResult result = await buildSystem.build(targetName, environment, BuildSystemConfig(
resourcePoolSize: argResults['resource-pool-size'],
@@ -156,9 +151,6 @@
String get name => 'describe';
@override
- bool get isExperimental => true;
-
- @override
Future<FlutterCommandResult> runCommand() {
try {
printStatus(
@@ -181,9 +173,6 @@
String get name => 'inputs';
@override
- bool get isExperimental => true;
-
- @override
Future<FlutterCommandResult> runCommand() {
try {
final List<Map<String, Object>> results = buildSystem.describe(targetName, environment);
@@ -210,9 +199,6 @@
String get name => 'build-dir';
@override
- bool get isExperimental => true;
-
- @override
Future<FlutterCommandResult> runCommand() {
printStatus(environment.buildDir.path);
return null;
diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart
index ef2235f..d15cfa4 100644
--- a/packages/flutter_tools/lib/src/commands/build_bundle.dart
+++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart
@@ -8,10 +8,10 @@
import '../base/file_system.dart';
import '../build_info.dart';
import '../bundle.dart';
+import '../features.dart';
import '../project.dart';
import '../reporting/usage.dart';
import '../runner/flutter_command.dart' show FlutterOptions, FlutterCommandResult;
-import '../version.dart';
import 'build.dart';
class BuildBundleCommand extends BuildSubCommand {
@@ -98,13 +98,21 @@
if (platform == null) {
throwToolExit('Unknown platform: $targetPlatform');
}
- // Check for target platforms that are only allowed on unstable Flutter.
+ // Check for target platforms that are only allowed via feature flags.
switch (platform) {
case TargetPlatform.darwin_x64:
+ if (!featureFlags.isMacOSEnabled) {
+ throwToolExit('macOS is not a supported target platform.');
+ }
+ break;
case TargetPlatform.windows_x64:
+ if (!featureFlags.isWindowsEnabled) {
+ throwToolExit('Windows is not a supported target platform.');
+ }
+ break;
case TargetPlatform.linux_x64:
- if (!FlutterVersion.instance.isMaster) {
- throwToolExit('$targetPlatform is not supported on stable Flutter.');
+ if (!featureFlags.isLinuxEnabled) {
+ throwToolExit('Linux is not a supported target platform.');
}
break;
default:
diff --git a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart
index 473f943..39e0a84 100644
--- a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart
+++ b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart
@@ -25,9 +25,6 @@
final String name = 'fuchsia';
@override
- bool isExperimental = true;
-
- @override
bool hidden = true;
@override
diff --git a/packages/flutter_tools/lib/src/commands/build_linux.dart b/packages/flutter_tools/lib/src/commands/build_linux.dart
index 4175b6d..e75e411 100644
--- a/packages/flutter_tools/lib/src/commands/build_linux.dart
+++ b/packages/flutter_tools/lib/src/commands/build_linux.dart
@@ -8,6 +8,7 @@
import '../base/platform.dart';
import '../build_info.dart';
import '../cache.dart';
+import '../features.dart';
import '../linux/build_linux.dart';
import '../project.dart';
import '../runner/flutter_command.dart' show FlutterCommandResult;
@@ -35,9 +36,6 @@
final String name = 'linux';
@override
- bool isExperimental = true;
-
- @override
bool hidden = true;
@override
@@ -54,6 +52,9 @@
Cache.releaseLockEarly();
final BuildInfo buildInfo = getBuildInfo();
final FlutterProject flutterProject = FlutterProject.current();
+ if (!featureFlags.isLinuxEnabled) {
+ throwToolExit('"build linux" is not currently supported.');
+ }
if (!platform.isLinux) {
throwToolExit('"build linux" only supported on Linux hosts.');
}
diff --git a/packages/flutter_tools/lib/src/commands/build_macos.dart b/packages/flutter_tools/lib/src/commands/build_macos.dart
index e773f42..f871186 100644
--- a/packages/flutter_tools/lib/src/commands/build_macos.dart
+++ b/packages/flutter_tools/lib/src/commands/build_macos.dart
@@ -8,6 +8,7 @@
import '../base/platform.dart';
import '../build_info.dart';
import '../cache.dart';
+import '../features.dart';
import '../macos/build_macos.dart';
import '../project.dart';
import '../runner/flutter_command.dart' show FlutterCommandResult;
@@ -35,9 +36,6 @@
final String name = 'macos';
@override
- bool isExperimental = true;
-
- @override
bool hidden = true;
@override
@@ -47,13 +45,16 @@
};
@override
- String get description => 'build the macOS desktop target (Experimental).';
+ String get description => 'build the macOS desktop target.';
@override
Future<FlutterCommandResult> runCommand() async {
Cache.releaseLockEarly();
final BuildInfo buildInfo = getBuildInfo();
final FlutterProject flutterProject = FlutterProject.current();
+ if (!featureFlags.isMacOSEnabled) {
+ throwToolExit('"build macos" is not currently supported.');
+ }
if (!platform.isMacOS) {
throwToolExit('"build macos" only supported on macOS hosts.');
}
diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart
index 32cea06..575d1b0 100644
--- a/packages/flutter_tools/lib/src/commands/build_web.dart
+++ b/packages/flutter_tools/lib/src/commands/build_web.dart
@@ -4,7 +4,9 @@
import 'dart:async';
+import '../base/common.dart';
import '../build_info.dart';
+import '../features.dart';
import '../project.dart';
import '../runner/flutter_command.dart'
show DevelopmentArtifact, FlutterCommandResult;
@@ -32,13 +34,13 @@
bool get hidden => true;
@override
- bool get isExperimental => true;
-
- @override
- final String description = '(EXPERIMENTAL) build a web application bundle.';
+ final String description = 'build a web application bundle.';
@override
Future<FlutterCommandResult> runCommand() async {
+ if (!featureFlags.isWebEnabled) {
+ throwToolExit('"build web" is not currently supported.');
+ }
final FlutterProject flutterProject = FlutterProject.current();
final String target = argResults['target'];
final BuildInfo buildInfo = getBuildInfo();
diff --git a/packages/flutter_tools/lib/src/commands/build_windows.dart b/packages/flutter_tools/lib/src/commands/build_windows.dart
index 884d26f..e41de03 100644
--- a/packages/flutter_tools/lib/src/commands/build_windows.dart
+++ b/packages/flutter_tools/lib/src/commands/build_windows.dart
@@ -8,6 +8,7 @@
import '../base/platform.dart';
import '../build_info.dart';
import '../cache.dart';
+import '../features.dart';
import '../project.dart';
import '../runner/flutter_command.dart' show FlutterCommandResult;
import '../windows/build_windows.dart';
@@ -35,9 +36,6 @@
final String name = 'windows';
@override
- bool isExperimental = true;
-
- @override
bool hidden = true;
@override
@@ -47,13 +45,16 @@
};
@override
- String get description => 'build the desktop Windows target (Experimental).';
+ String get description => 'build the desktop Windows target.';
@override
Future<FlutterCommandResult> runCommand() async {
Cache.releaseLockEarly();
final FlutterProject flutterProject = FlutterProject.current();
final BuildInfo buildInfo = getBuildInfo();
+ if (!featureFlags.isWindowsEnabled) {
+ throwToolExit('"build windows" is not currently supported.');
+ }
if (!platform.isWindows) {
throwToolExit('"build windows" only supported on Windows hosts.');
}
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 17458ee..875beae 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -20,6 +20,7 @@
import '../convert.dart';
import '../dart/pub.dart';
import '../doctor.dart';
+import '../features.dart';
import '../globals.dart';
import '../project.dart';
import '../reporting/usage.dart';
@@ -613,7 +614,7 @@
'iosLanguage': iosLanguage,
'flutterRevision': FlutterVersion.instance.frameworkRevision,
'flutterChannel': FlutterVersion.instance.channel,
- 'web': web && FlutterVersion.instance.isMaster
+ 'web': web && featureFlags.isWebEnabled,
};
}
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 91de004..0254e3e 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -13,6 +13,7 @@
import '../build_info.dart';
import '../cache.dart';
import '../device.dart';
+import '../features.dart';
import '../globals.dart';
import '../macos/xcode.dart';
import '../project.dart';
@@ -410,11 +411,11 @@
);
flutterDevices.add(flutterDevice);
}
- // Only support "web mode" on non-stable branches with a single web device
- // in a "hot mode".
- final bool webMode = FlutterVersion.instance.isMaster
- && devices.length == 1
- && await devices.single.targetPlatform == TargetPlatform.web_javascript;
+ // Only support "web mode" with a single web device due to resident runner
+ // refactoring required otherwise.
+ final bool webMode = featureFlags.isWebEnabled &&
+ devices.length == 1 &&
+ await devices.single.targetPlatform == TargetPlatform.web_javascript;
ResidentRunner runner;
final String applicationBinaryPath = argResults['use-application-binary'];
diff --git a/packages/flutter_tools/lib/src/commands/unpack.dart b/packages/flutter_tools/lib/src/commands/unpack.dart
index 799815e..481c326 100644
--- a/packages/flutter_tools/lib/src/commands/unpack.dart
+++ b/packages/flutter_tools/lib/src/commands/unpack.dart
@@ -70,9 +70,6 @@
bool get hidden => true;
@override
- bool get isExperimental => true;
-
- @override
Future<Set<DevelopmentArtifact>> get requiredArtifacts async {
final Set<DevelopmentArtifact> result = <DevelopmentArtifact>{
DevelopmentArtifact.universal,
diff --git a/packages/flutter_tools/lib/src/desktop.dart b/packages/flutter_tools/lib/src/desktop.dart
index 501e241..e62c4e7 100644
--- a/packages/flutter_tools/lib/src/desktop.dart
+++ b/packages/flutter_tools/lib/src/desktop.dart
@@ -4,32 +4,10 @@
import 'dart:async';
-import 'package:meta/meta.dart';
-
-import 'base/common.dart';
import 'base/io.dart';
-import 'base/platform.dart';
import 'base/process_manager.dart';
import 'convert.dart';
import 'device.dart';
-import 'version.dart';
-
-@visibleForTesting
-bool debugDisableDesktop = false;
-
-/// Only launch or display desktop embedding devices from the command line
-/// or if `ENABLE_FLUTTER_DESKTOP` environment variable is set to true.
-bool get flutterDesktopEnabled {
- if (debugDisableDesktop) {
- return false;
- }
- if (isRunningFromDaemon) {
- final bool platformEnabled = platform
- .environment['ENABLE_FLUTTER_DESKTOP']?.toLowerCase() == 'true';
- return platformEnabled && FlutterVersion.instance.isMaster;
- }
- return FlutterVersion.instance.isMaster;
-}
/// Kills a process on linux or macOS.
Future<bool> killProcess(String executable) async {
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 936bf15..734172f 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -14,9 +14,7 @@
import 'base/file_system.dart';
import 'base/utils.dart';
import 'build_info.dart';
-import 'desktop.dart';
import 'fuchsia/fuchsia_device.dart';
-
import 'globals.dart';
import 'ios/devices.dart';
import 'ios/simulators.dart';
@@ -25,7 +23,6 @@
import 'project.dart';
import 'tester/flutter_tester.dart';
import 'web/web_device.dart';
-import 'web/workflow.dart';
import 'windows/windows_device.dart';
DeviceManager get deviceManager => context.get<DeviceManager>();
@@ -74,23 +71,11 @@
IOSSimulators(),
FuchsiaDevices(),
FlutterTesterDevices(),
- ] + _conditionalDesktopDevices + _conditionalWebDevices);
-
- /// Only add desktop devices if the flag is enabled.
- static List<DeviceDiscovery> get _conditionalDesktopDevices {
- return flutterDesktopEnabled ? <DeviceDiscovery>[
- MacOSDevices(),
- LinuxDevices(),
- WindowsDevices(),
- ] : <DeviceDiscovery>[];
- }
-
- /// Only add web devices if the flag is enabled.
- static List<DeviceDiscovery> get _conditionalWebDevices {
- return flutterWebEnabled ? <DeviceDiscovery>[
- WebDevices(),
- ] : <DeviceDiscovery>[];
- }
+ MacOSDevices(),
+ LinuxDevices(),
+ WindowsDevices(),
+ WebDevices(),
+ ]);
String _specifiedDeviceId;
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index fa4081d..cf697c7 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -19,7 +19,6 @@
import 'base/utils.dart';
import 'base/version.dart';
import 'cache.dart';
-import 'desktop.dart';
import 'device.dart';
import 'fuchsia/fuchsia_workflow.dart';
import 'globals.dart';
@@ -74,12 +73,10 @@
GroupedValidator(<DoctorValidator>[xcodeValidator, cocoapodsValidator]),
if (webWorkflow.appliesToHostPlatform)
const WebValidator(),
- // Add desktop doctors to workflow if the flag is enabled.
- if (flutterDesktopEnabled)
- ...<DoctorValidator>[
- if (linuxWorkflow.appliesToHostPlatform) LinuxDoctorValidator(),
- if (windowsWorkflow.appliesToHostPlatform) visualStudioValidator,
- ],
+ if (linuxWorkflow.appliesToHostPlatform)
+ LinuxDoctorValidator(),
+ if (windowsWorkflow.appliesToHostPlatform)
+ visualStudioValidator,
if (ideValidators.isNotEmpty)
...ideValidators
else
diff --git a/packages/flutter_tools/lib/src/linux/linux_workflow.dart b/packages/flutter_tools/lib/src/linux/linux_workflow.dart
index 4959f72..e51c26b 100644
--- a/packages/flutter_tools/lib/src/linux/linux_workflow.dart
+++ b/packages/flutter_tools/lib/src/linux/linux_workflow.dart
@@ -4,8 +4,8 @@
import '../base/context.dart';
import '../base/platform.dart';
-import '../desktop.dart';
import '../doctor.dart';
+import '../features.dart';
/// The [WindowsWorkflow] instance.
LinuxWorkflow get linuxWorkflow => context.get<LinuxWorkflow>();
@@ -18,13 +18,13 @@
const LinuxWorkflow();
@override
- bool get appliesToHostPlatform => platform.isLinux;
+ bool get appliesToHostPlatform => platform.isLinux && featureFlags.isLinuxEnabled;
@override
- bool get canLaunchDevices => platform.isLinux && flutterDesktopEnabled;
+ bool get canLaunchDevices => platform.isLinux && featureFlags.isLinuxEnabled;
@override
- bool get canListDevices => platform.isLinux && flutterDesktopEnabled;
+ bool get canListDevices => platform.isLinux && featureFlags.isLinuxEnabled;
@override
bool get canListEmulators => false;
diff --git a/packages/flutter_tools/lib/src/macos/macos_workflow.dart b/packages/flutter_tools/lib/src/macos/macos_workflow.dart
index e85e3d4..1c0391f 100644
--- a/packages/flutter_tools/lib/src/macos/macos_workflow.dart
+++ b/packages/flutter_tools/lib/src/macos/macos_workflow.dart
@@ -4,8 +4,8 @@
import '../base/context.dart';
import '../base/platform.dart';
-import '../desktop.dart';
import '../doctor.dart';
+import '../features.dart';
/// The [MacOSWorkflow] instance.
MacOSWorkflow get macOSWorkflow => context.get<MacOSWorkflow>();
@@ -18,13 +18,13 @@
const MacOSWorkflow();
@override
- bool get appliesToHostPlatform => platform.isMacOS;
+ bool get appliesToHostPlatform => platform.isMacOS && featureFlags.isMacOSEnabled;
@override
- bool get canLaunchDevices => platform.isMacOS && flutterDesktopEnabled;
+ bool get canLaunchDevices => platform.isMacOS && featureFlags.isMacOSEnabled;
@override
- bool get canListDevices => platform.isMacOS && flutterDesktopEnabled;
+ bool get canListDevices => platform.isMacOS && featureFlags.isMacOSEnabled;
@override
bool get canListEmulators => false;
diff --git a/packages/flutter_tools/lib/src/plugins.dart b/packages/flutter_tools/lib/src/plugins.dart
index 0242a62..021ec84 100644
--- a/packages/flutter_tools/lib/src/plugins.dart
+++ b/packages/flutter_tools/lib/src/plugins.dart
@@ -9,7 +9,7 @@
import 'base/file_system.dart';
import 'dart/package_map.dart';
-import 'desktop.dart';
+import 'features.dart';
import 'globals.dart';
import 'macos/cocoapods.dart';
import 'project.dart';
@@ -364,7 +364,7 @@
// TODO(stuartmorgan): Revisit the condition here once the plans for handling
// desktop in existing projects are in place. For now, ignore checkProjects
// on desktop and always treat it as true.
- if (flutterDesktopEnabled && project.macos.existsSync()) {
+ if (featureFlags.isMacOSEnabled && project.macos.existsSync()) {
await _writeMacOSPluginRegistrant(project, plugins);
}
for (final XcodeBasedProject subproject in <XcodeBasedProject>[project.ios, project.macos]) {
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index 0a1b5b8..95b526e 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -14,7 +14,7 @@
import 'build_info.dart';
import 'bundle.dart' as bundle;
import 'cache.dart';
-import 'desktop.dart';
+import 'features.dart';
import 'flutter_manifest.dart';
import 'globals.dart';
import 'ios/ios_workflow.dart';
@@ -22,7 +22,6 @@
import 'ios/xcodeproj.dart' as xcode;
import 'plugins.dart';
import 'template.dart';
-import 'web/workflow.dart';
FlutterProjectFactory get projectFactory => context.get<FlutterProjectFactory>() ?? const FlutterProjectFactory();
@@ -206,10 +205,10 @@
}
// TODO(stuartmorgan): Add checkProjects logic once a create workflow exists
// for macOS. For now, always treat checkProjects as true for macOS.
- if (flutterDesktopEnabled && macos.existsSync()) {
+ if (featureFlags.isMacOSEnabled && macos.existsSync()) {
await macos.ensureReadyForPlatformSpecificTooling();
}
- if (flutterWebEnabled && web.existsSync()) {
+ if (featureFlags.isWebEnabled && web.existsSync()) {
await web.ensureReadyForPlatformSpecificTooling();
}
await injectPlugins(this, checkProjects: checkProjects);
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index e9d9211..2f56364 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -25,10 +25,10 @@
import '../dart/pub.dart';
import '../device.dart';
import '../doctor.dart';
+import '../features.dart';
import '../globals.dart';
import '../project.dart';
import '../reporting/usage.dart';
-import '../version.dart';
import 'flutter_command_runner.dart';
export '../cache.dart' show DevelopmentArtifact;
@@ -355,11 +355,6 @@
}
}
- /// Whether this feature should not be usable on stable branches.
- ///
- /// Defaults to false, meaning it is usable.
- bool get isExperimental => false;
-
/// Additional usage values to be sent with the usage ping.
Future<Map<String, String>> get usageValues async => const <String, String>{};
@@ -555,12 +550,6 @@
@protected
@mustCallSuper
Future<void> validateCommand() async {
- // If we're on a stable branch, then don't allow the usage of
- // "experimental" features.
- if (isExperimental && !FlutterVersion.instance.isMaster) {
- throwToolExit('Experimental feature $name is not supported on stable branches');
- }
-
if (_requiresPubspecYaml && !PackageMap.isUsingCustomPackagesPath) {
// Don't expect a pubspec.yaml file if the user passed in an explicit .packages file path.
if (!fs.isFileSync('pubspec.yaml')) {
@@ -653,17 +642,17 @@
case TargetPlatform.ios:
return DevelopmentArtifact.iOS;
case TargetPlatform.darwin_x64:
- if (FlutterVersion.instance.isMaster) {
+ if (featureFlags.isMacOSEnabled) {
return DevelopmentArtifact.macOS;
}
return null;
case TargetPlatform.windows_x64:
- if (!FlutterVersion.instance.isMaster) {
+ if (featureFlags.isWindowsEnabled) {
return DevelopmentArtifact.windows;
}
return null;
case TargetPlatform.linux_x64:
- if (!FlutterVersion.instance.isMaster) {
+ if (featureFlags.isLinuxEnabled) {
return DevelopmentArtifact.linux;
}
return null;
diff --git a/packages/flutter_tools/lib/src/web/web_device.dart b/packages/flutter_tools/lib/src/web/web_device.dart
index ecd8f41..689eb72 100644
--- a/packages/flutter_tools/lib/src/web/web_device.dart
+++ b/packages/flutter_tools/lib/src/web/web_device.dart
@@ -11,6 +11,7 @@
import '../base/process_manager.dart';
import '../build_info.dart';
import '../device.dart';
+import '../features.dart';
import '../project.dart';
import 'chrome.dart';
import 'workflow.dart';
@@ -74,7 +75,7 @@
Future<String> get emulatorId async => null;
@override
- bool isSupported() => flutterWebEnabled && canFindChrome();
+ bool isSupported() => featureFlags.isWebEnabled && canFindChrome();
@override
String get name => 'Chrome';
@@ -151,7 +152,7 @@
final ChromeDevice _webDevice = ChromeDevice();
@override
- bool get canListAnything => flutterWebEnabled;
+ bool get canListAnything => featureFlags.isWebEnabled;
@override
Future<List<Device>> pollingGetDevices() async {
@@ -161,7 +162,7 @@
}
@override
- bool get supportsPlatform => flutterWebEnabled;
+ bool get supportsPlatform => featureFlags.isWebEnabled;
}
@visibleForTesting
diff --git a/packages/flutter_tools/lib/src/web/workflow.dart b/packages/flutter_tools/lib/src/web/workflow.dart
index 925ec3d..1f388ca 100644
--- a/packages/flutter_tools/lib/src/web/workflow.dart
+++ b/packages/flutter_tools/lib/src/web/workflow.dart
@@ -2,33 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:meta/meta.dart';
-
-import '../base/common.dart';
import '../base/context.dart';
import '../base/platform.dart';
import '../base/process_manager.dart';
import '../doctor.dart';
-import '../version.dart';
+import '../features.dart';
import 'chrome.dart';
-@visibleForTesting
-bool debugDisableWeb = false;
-
-/// Only launch or display web devices if `FLUTTER_WEB`
-/// environment variable is set to true from the daemon.
-bool get flutterWebEnabled {
- if (debugDisableWeb) {
- return false;
- }
- if (isRunningFromDaemon) {
- final bool platformEnabled = platform
- .environment['FLUTTER_WEB']?.toLowerCase() == 'true';
- return platformEnabled && FlutterVersion.instance.isMaster;
- }
- return FlutterVersion.instance.isMaster;
-}
-
/// The web workflow instance.
WebWorkflow get webWorkflow => context.get<WebWorkflow>();
@@ -36,13 +16,13 @@
const WebWorkflow();
@override
- bool get appliesToHostPlatform => flutterWebEnabled && (platform.isWindows || platform.isMacOS || platform.isLinux);
+ bool get appliesToHostPlatform => featureFlags.isWebEnabled && (platform.isWindows || platform.isMacOS || platform.isLinux);
@override
- bool get canLaunchDevices => flutterWebEnabled && canFindChrome();
+ bool get canLaunchDevices => featureFlags.isWebEnabled && canFindChrome();
@override
- bool get canListDevices => flutterWebEnabled && canFindChrome();
+ bool get canListDevices => featureFlags.isWebEnabled && canFindChrome();
@override
bool get canListEmulators => false;
diff --git a/packages/flutter_tools/lib/src/windows/windows_workflow.dart b/packages/flutter_tools/lib/src/windows/windows_workflow.dart
index 8d8e34e..2a423bb 100644
--- a/packages/flutter_tools/lib/src/windows/windows_workflow.dart
+++ b/packages/flutter_tools/lib/src/windows/windows_workflow.dart
@@ -4,8 +4,8 @@
import '../base/context.dart';
import '../base/platform.dart';
-import '../desktop.dart';
import '../doctor.dart';
+import '../features.dart';
/// The [WindowsWorkflow] instance.
WindowsWorkflow get windowsWorkflow => context.get<WindowsWorkflow>();
@@ -18,13 +18,13 @@
const WindowsWorkflow();
@override
- bool get appliesToHostPlatform => platform.isWindows;
+ bool get appliesToHostPlatform => platform.isWindows && featureFlags.isWindowsEnabled;
@override
- bool get canLaunchDevices => platform.isWindows && flutterDesktopEnabled;
+ bool get canLaunchDevices => platform.isWindows && featureFlags.isWindowsEnabled;
@override
- bool get canListDevices => platform.isWindows && flutterDesktopEnabled;
+ bool get canListDevices => platform.isWindows && featureFlags.isWindowsEnabled;
@override
bool get canListEmulators => false;