Add flutter create for the web (#34018)
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 13a1be5..f50d5b9 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -143,6 +143,14 @@
defaultsTo: false,
help: 'Generate a project using the AndroidX support libraries',
);
+ argParser.addFlag(
+ 'web',
+ negatable: true,
+ defaultsTo: false,
+ hide: true,
+ help: '(Experimental) Generate the web specific tooling. Only supported '
+ 'on non-stable branches',
+ );
}
@override
@@ -367,6 +375,7 @@
androidX: argResults['androidx'],
androidLanguage: argResults['android-language'],
iosLanguage: argResults['ios-language'],
+ web: argResults['web'],
);
final String relativeDirPath = fs.path.relative(projectDirPath);
@@ -576,6 +585,7 @@
String flutterRoot,
bool renderDriverTest = false,
bool withPluginHook = false,
+ bool web = false,
}) {
flutterRoot = fs.path.normalize(flutterRoot);
@@ -603,6 +613,7 @@
'iosLanguage': iosLanguage,
'flutterRevision': FlutterVersion.instance.frameworkRevision,
'flutterChannel': FlutterVersion.instance.channel,
+ 'web': web && !FlutterVersion.instance.isStable,
};
}
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index 03efe52..2ea276e 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -586,23 +586,7 @@
/// The html file used to host the flutter web application.
File get indexFile => parent.directory.childDirectory('web').childFile('index.html');
- Future<void> ensureReadyForPlatformSpecificTooling() async {
- /// Generate index.html in build/web. Eventually we could support
- /// a custom html under the web sub directory.
- final Directory outputDir = fs.directory(getWebBuildDirectory());
- if (!outputDir.existsSync()) {
- outputDir.createSync(recursive: true);
- }
- final Template template = Template.fromName('web/index.html.tmpl');
- template.render(
- outputDir,
- <String, dynamic>{
- 'appName': parent.manifest.appName,
- },
- printStatusWhenWriting: false,
- overwriteExisting: true,
- );
- }
+ Future<void> ensureReadyForPlatformSpecificTooling() async {}
}
/// Deletes [directory] with all content.
diff --git a/packages/flutter_tools/lib/src/template.dart b/packages/flutter_tools/lib/src/template.dart
index 97bc18b..943730c 100644
--- a/packages/flutter_tools/lib/src/template.dart
+++ b/packages/flutter_tools/lib/src/template.dart
@@ -85,6 +85,11 @@
return null;
relativeDestinationPath = relativeDestinationPath.replaceAll('$platform-$language.tmpl', platform);
}
+ // Only build a web project if explicitly asked.
+ final bool web = context['web'];
+ if (relativeDestinationPath.contains('web') && !web) {
+ return null;
+ }
final String projectName = context['projectName'];
final String androidIdentifier = context['androidIdentifier'];
final String pluginClass = context['pluginClass'];