Remove `--template=skeleton` and add a placeholder error message instead. (#160695)
Closes https://github.com/flutter/flutter/issues/160673.
Does the following:
- Renames `FlutterProjectType` to `FlutterTemplateType`; did some
enhanced enum cleanups while at it
- Creates a hierarchy of `RemovedFlutterTemplateType` from
`ParsedFlutterTemplateType`
- Removes the `skeleton` directory
- Merges `app_shared` back into `app` (no longer required now that
`skeleton` is removed)
Final cleanups are tracked in
https://github.com/flutter/flutter/issues/160692.
(Added @zanderso just to spot check this is what he meant by
https://github.com/flutter/flutter/issues/160673#issuecomment-2557742347)
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index 8edafdf..e79fbd0 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -2443,7 +2443,7 @@
'packages',
'flutter_tools',
'templates',
- 'app_shared',
+ 'app',
'windows.tmpl',
'runner',
);
diff --git a/engine/src/flutter/shell/platform/windows/README.md b/engine/src/flutter/shell/platform/windows/README.md
index 56c8d59..db1686c 100644
--- a/engine/src/flutter/shell/platform/windows/README.md
+++ b/engine/src/flutter/shell/platform/windows/README.md
@@ -19,7 +19,7 @@
1. [Flutter tool's Windows logic](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/lib/src/windows) - Builds and runs Flutter Windows apps on
the command line.
-1. [Windows app template](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/app_shared/windows.tmpl) - The entrypoint for Flutter Windows app. This
+1. [Windows app template](https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/app/windows.tmpl) - The entrypoint for Flutter Windows app. This
launches the Windows embedder.
1. [`platform-windows` GitHub issues label](https://github.com/flutter/flutter/issues?q=is%3Aopen+label%3Aplatform-windows+sort%3Aupdated-desc)
1. [`#hackers-desktop` Discord channel](https://discord.com/channels/608014603317936148/608020180177780791)
diff --git a/packages/flutter_tools/.gitignore b/packages/flutter_tools/.gitignore
new file mode 100644
index 0000000..14759db
--- /dev/null
+++ b/packages/flutter_tools/.gitignore
@@ -0,0 +1,6 @@
+# Normally (from the root) we ignore .idea folders, but the ones present
+# in ide_templates/ and templates/ are real folders we intend to copy as part of
+# "flutter create".
+
+!ide_templates/intellij/.idea
+!templates/**/.idea
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index b031cc0..f3193af 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -104,13 +104,16 @@
hide: !verboseHelp,
);
addPlatformsOptions(customHelp: kPlatformHelp);
+
+ final List<ParsedFlutterTemplateType> enabledTemplates =
+ ParsedFlutterTemplateType.enabledValues(featureFlags);
argParser.addOption(
'template',
abbr: 't',
- allowed: FlutterProjectType.enabledValues.map<String>((FlutterProjectType e) => e.cliName),
+ allowed: enabledTemplates.map((ParsedFlutterTemplateType t) => t.cliName),
help: 'Specify the type of project to create.',
valueHelp: 'type',
- allowedHelp: CliEnum.allowedHelp(FlutterProjectType.enabledValues),
+ allowedHelp: CliEnum.allowedHelp(enabledTemplates),
);
argParser.addOption(
'sample',
@@ -228,13 +231,28 @@
}
}
- FlutterProjectType _getProjectType(Directory projectDir) {
- FlutterProjectType? template;
- FlutterProjectType? detectedProjectType;
+ FlutterTemplateType _getProjectType(Directory projectDir) {
+ FlutterTemplateType? template;
+ FlutterTemplateType? detectedProjectType;
final bool metadataExists = projectDir.absolute.childFile('.metadata').existsSync();
final String? templateArgument = stringArg('template');
if (templateArgument != null) {
- template = FlutterProjectType.fromCliName(templateArgument);
+ final ParsedFlutterTemplateType? parsedTemplate = ParsedFlutterTemplateType.fromCliName(
+ templateArgument,
+ );
+ switch (parsedTemplate) {
+ case RemovedFlutterTemplateType():
+ throwToolExit(
+ 'The template ${parsedTemplate.cliName} is no longer available. For '
+ 'your convenience the former help text is repeated below with context '
+ 'about the removal and other possible resources:\n\n'
+ '${parsedTemplate.helpText}',
+ );
+ case FlutterTemplateType():
+ template = parsedTemplate;
+ case null:
+ break;
+ }
}
// If the project directory exists and isn't empty, then try to determine the template
// type from the project directory.
@@ -250,7 +268,7 @@
);
}
}
- template ??= detectedProjectType ?? FlutterProjectType.app;
+ template ??= detectedProjectType ?? FlutterTemplateType.app;
if (detectedProjectType != null && template != detectedProjectType && metadataExists) {
// We can only be definitive that this is the wrong type if the .metadata file
// exists and contains a type that doesn't match.
@@ -279,27 +297,27 @@
String? sampleCode;
final String? sampleArgument = stringArg('sample');
final bool emptyArgument = boolArg('empty');
- final FlutterProjectType template = _getProjectType(projectDir);
+ final FlutterTemplateType template = _getProjectType(projectDir);
if (sampleArgument != null) {
- if (template != FlutterProjectType.app) {
+ if (template != FlutterTemplateType.app) {
throwToolExit(
'Cannot specify --sample with a project type other than '
- '"${FlutterProjectType.app.cliName}"',
+ '"${FlutterTemplateType.app.cliName}"',
);
}
// Fetch the sample from the server.
sampleCode = await _fetchSampleFromServer(sampleArgument);
}
- if (emptyArgument && template != FlutterProjectType.app) {
+ if (emptyArgument && template != FlutterTemplateType.app) {
throwToolExit('The --empty flag is only supported for the app template.');
}
- final bool generateModule = template == FlutterProjectType.module;
- final bool generateMethodChannelsPlugin = template == FlutterProjectType.plugin;
- final bool generateFfiPackage = template == FlutterProjectType.packageFfi;
- final bool generateFfiPlugin = template == FlutterProjectType.pluginFfi;
+ final bool generateModule = template == FlutterTemplateType.module;
+ final bool generateMethodChannelsPlugin = template == FlutterTemplateType.plugin;
+ final bool generateFfiPackage = template == FlutterTemplateType.packageFfi;
+ final bool generateFfiPlugin = template == FlutterTemplateType.pluginFfi;
final bool generateFfi = generateFfiPlugin || generateFfiPackage;
- final bool generatePackage = template == FlutterProjectType.package;
+ final bool generatePackage = template == FlutterTemplateType.package;
final List<String> platforms = stringsArg('platforms');
// `--platforms` does not support module or package.
@@ -359,7 +377,7 @@
final bool includeLinux;
final bool includeMacos;
final bool includeWindows;
- if (template == FlutterProjectType.module) {
+ if (template == FlutterTemplateType.module) {
// The module template only supports iOS and Android.
includeIos = true;
includeAndroid = true;
@@ -367,7 +385,7 @@
includeLinux = false;
includeMacos = false;
includeWindows = false;
- } else if (template == FlutterProjectType.package) {
+ } else if (template == FlutterTemplateType.package) {
// The package template does not supports any platform.
includeIos = false;
includeAndroid = false;
@@ -443,7 +461,7 @@
int generatedFileCount = 0;
final PubContext pubContext;
switch (template) {
- case FlutterProjectType.app:
+ case FlutterTemplateType.app:
final bool skipWidgetTestsGeneration = sampleCode != null || emptyArgument;
generatedFileCount += await generateApp(
@@ -455,17 +473,7 @@
projectType: template,
);
pubContext = PubContext.create;
- case FlutterProjectType.skeleton:
- generatedFileCount += await generateApp(
- <String>['skeleton'],
- relativeDir,
- templateContext,
- overwrite: overwrite,
- printStatusWhenWriting: !creatingNewProject,
- generateMetadata: false,
- );
- pubContext = PubContext.create;
- case FlutterProjectType.module:
+ case FlutterTemplateType.module:
generatedFileCount += await _generateModule(
relativeDir,
templateContext,
@@ -473,7 +481,7 @@
printStatusWhenWriting: !creatingNewProject,
);
pubContext = PubContext.create;
- case FlutterProjectType.package:
+ case FlutterTemplateType.package:
generatedFileCount += await _generatePackage(
relativeDir,
templateContext,
@@ -481,7 +489,7 @@
printStatusWhenWriting: !creatingNewProject,
);
pubContext = PubContext.createPackage;
- case FlutterProjectType.plugin:
+ case FlutterTemplateType.plugin:
generatedFileCount += await _generateMethodChannelPlugin(
relativeDir,
templateContext,
@@ -490,7 +498,7 @@
projectType: template,
);
pubContext = PubContext.createPlugin;
- case FlutterProjectType.pluginFfi:
+ case FlutterTemplateType.pluginFfi:
generatedFileCount += await _generateFfiPlugin(
relativeDir,
templateContext,
@@ -499,7 +507,7 @@
projectType: template,
);
pubContext = PubContext.createPlugin;
- case FlutterProjectType.packageFfi:
+ case FlutterTemplateType.packageFfi:
generatedFileCount += await _generateFfiPackage(
relativeDir,
templateContext,
@@ -667,7 +675,7 @@
Map<String, Object?> templateContext, {
bool overwrite = false,
bool printStatusWhenWriting = true,
- required FlutterProjectType projectType,
+ required FlutterTemplateType projectType,
}) async {
// Plugins only add a platform if it was requested explicitly by the user.
if (!argResults!.wasParsed('platforms')) {
@@ -763,7 +771,7 @@
Map<String, Object?> templateContext, {
bool overwrite = false,
bool printStatusWhenWriting = true,
- required FlutterProjectType projectType,
+ required FlutterTemplateType projectType,
}) async {
// Plugins only add a platform if it was requested explicitly by the user.
if (!argResults!.wasParsed('platforms')) {
@@ -844,7 +852,7 @@
Map<String, Object?> templateContext, {
bool overwrite = false,
bool printStatusWhenWriting = true,
- required FlutterProjectType projectType,
+ required FlutterTemplateType projectType,
}) async {
int generatedCount = 0;
final String? description =
@@ -1025,7 +1033,7 @@
required String templateGradleVersion,
required String templateAgpVersion,
required String templateAgpVersionForModule,
- required FlutterProjectType projectType,
+ required FlutterTemplateType projectType,
required String projectDirPath,
}) {
// Determine if the Java version specified conflicts with the template Gradle or AGP version.
@@ -1041,7 +1049,7 @@
);
String relevantTemplateAgpVersion = templateAgpVersion;
- if (projectType == FlutterProjectType.module &&
+ if (projectType == FlutterTemplateType.module &&
Version.parse(templateAgpVersion)! < Version.parse(templateAgpVersionForModule)!) {
// If a module is being created, make sure to check for Java/AGP compatibility between the highest used version of AGP in the module template.
javaAgpVersionsCompatible = gradle.validateJavaAndAgp(
@@ -1066,7 +1074,7 @@
);
if (!javaGradleVersionsCompatible) {
- if (projectType == FlutterProjectType.plugin || projectType == FlutterProjectType.pluginFfi) {
+ if (projectType == FlutterTemplateType.plugin || projectType == FlutterTemplateType.pluginFfi) {
// Only impacted files could be in sample code.
return;
}
@@ -1157,24 +1165,26 @@
// Returns path of the gradle-wrapper.properties file for the specified
// generated project type.
-String? _getGradleWrapperPropertiesFilePath(FlutterProjectType projectType, String projectDirPath) {
+String? _getGradleWrapperPropertiesFilePath(
+ FlutterTemplateType projectType,
+ String projectDirPath,
+) {
String gradleWrapperPropertiesFilePath = '';
switch (projectType) {
- case FlutterProjectType.app:
- case FlutterProjectType.skeleton:
+ case FlutterTemplateType.app:
gradleWrapperPropertiesFilePath = globals.fs.path.join(
projectDirPath,
'android/gradle/wrapper/gradle-wrapper.properties',
);
- case FlutterProjectType.module:
+ case FlutterTemplateType.module:
gradleWrapperPropertiesFilePath = globals.fs.path.join(
projectDirPath,
'.android/gradle/wrapper/gradle-wrapper.properties',
);
- case FlutterProjectType.plugin:
- case FlutterProjectType.pluginFfi:
- case FlutterProjectType.package:
- case FlutterProjectType.packageFfi:
+ case FlutterTemplateType.plugin:
+ case FlutterTemplateType.pluginFfi:
+ case FlutterTemplateType.package:
+ case FlutterTemplateType.packageFfi:
// TODO(camsim99): Add relevant file path for packageFfi when Android is supported.
// No gradle-wrapper.properties files not part of sample code that
// can be determined.
@@ -1186,18 +1196,17 @@
// Returns the path(s) of the build.gradle file(s) for the specified generated
// project type.
List<String>? _getBuildGradleConfigurationFilePaths(
- FlutterProjectType projectType,
+ FlutterTemplateType projectType,
String projectDirPath,
) {
final List<String> buildGradleConfigurationFilePaths = <String>[];
switch (projectType) {
- case FlutterProjectType.app:
- case FlutterProjectType.skeleton:
- case FlutterProjectType.pluginFfi:
+ case FlutterTemplateType.app:
+ case FlutterTemplateType.pluginFfi:
buildGradleConfigurationFilePaths.add(
globals.fs.path.join(projectDirPath, 'android/build.gradle'),
);
- case FlutterProjectType.module:
+ case FlutterTemplateType.module:
const String moduleBuildGradleFilePath = '.android/build.gradle';
const String moduleAppBuildGradleFlePath = '.android/app/build.gradle';
const String moduleFlutterBuildGradleFilePath = '.android/Flutter/build.gradle';
@@ -1206,12 +1215,12 @@
globals.fs.path.join(projectDirPath, moduleAppBuildGradleFlePath),
globals.fs.path.join(projectDirPath, moduleFlutterBuildGradleFilePath),
]);
- case FlutterProjectType.plugin:
+ case FlutterTemplateType.plugin:
buildGradleConfigurationFilePaths.add(
globals.fs.path.join(projectDirPath, 'android/app/build.gradle'),
);
- case FlutterProjectType.package:
- case FlutterProjectType.packageFfi:
+ case FlutterTemplateType.package:
+ case FlutterTemplateType.packageFfi:
// TODO(camsim99): Add any relevant file paths for packageFfi when Android is supported.
// No build.gradle file because there is no platform-specific implementation.
return null;
diff --git a/packages/flutter_tools/lib/src/commands/create_base.dart b/packages/flutter_tools/lib/src/commands/create_base.dart
index 37c3a9a..830f92d 100644
--- a/packages/flutter_tools/lib/src/commands/create_base.dart
+++ b/packages/flutter_tools/lib/src/commands/create_base.dart
@@ -158,7 +158,7 @@
/// Throws assertion if [projectDir] does not exist or empty.
/// Returns null if no project type can be determined.
@protected
- FlutterProjectType? determineTemplateType() {
+ FlutterTemplateType? determineTemplateType() {
assert(projectDir.existsSync() && projectDir.listSync().isNotEmpty);
final File metadataFile = globals.fs.file(
globals.fs.path.join(projectDir.absolute.path, '.metadata'),
@@ -167,7 +167,7 @@
metadataFile,
globals.logger,
);
- final FlutterProjectType? projectType = projectMetadata.projectType;
+ final FlutterTemplateType? projectType = projectMetadata.projectType;
if (projectType != null) {
return projectType;
}
@@ -184,7 +184,7 @@
if (exists(<String>['android', 'app']) ||
exists(<String>['ios', 'Runner']) ||
exists(<String>['ios', 'Flutter'])) {
- return FlutterProjectType.app;
+ return FlutterTemplateType.app;
}
// Since we can't really be definitive on nearly-empty directories, err on
// the side of prudence and just say we don't know.
@@ -472,11 +472,11 @@
bool pluginExampleApp = false,
bool printStatusWhenWriting = true,
bool generateMetadata = true,
- FlutterProjectType? projectType,
+ FlutterTemplateType? projectType,
}) async {
int generatedCount = 0;
generatedCount += await renderMerged(
- <String>[...templateNames, 'app_shared'],
+ <String>[...templateNames],
directory,
templateContext,
overwrite: overwrite,
diff --git a/packages/flutter_tools/lib/src/flutter_project_metadata.dart b/packages/flutter_tools/lib/src/flutter_project_metadata.dart
index b05c46d..942ecaa 100644
--- a/packages/flutter_tools/lib/src/flutter_project_metadata.dart
+++ b/packages/flutter_tools/lib/src/flutter_project_metadata.dart
@@ -2,6 +2,7 @@
// 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 'package:yaml/yaml.dart';
import 'base/file_system.dart';
@@ -12,73 +13,122 @@
import 'template.dart';
import 'version.dart';
-enum FlutterProjectType implements CliEnum {
- /// This is the default project with the user-managed host code.
- /// It is different than the "module" template in that it exposes and doesn't
- /// manage the platform code.
- app,
+/// The result of parsing `--template=` for `flutter create` and related commands.
+@immutable
+sealed class ParsedFlutterTemplateType implements CliEnum {
+ static const List<ParsedFlutterTemplateType> _values = <ParsedFlutterTemplateType>[
+ ...FlutterTemplateType.values,
+ ...RemovedFlutterTemplateType.values,
+ ];
- /// A List/Detail app template that follows community best practices.
- skeleton,
-
- /// The is a project that has managed platform host code. It is an application with
- /// ephemeral .ios and .android directories that can be updated automatically.
- module,
-
- /// This is a Flutter Dart package project. It doesn't have any native
- /// components, only Dart.
- package,
-
- /// This is a Dart package project with external builds for native components.
- packageFfi,
-
- /// This is a native plugin project.
- plugin,
-
- /// This is an FFI native plugin project.
- pluginFfi;
-
- @override
- String get cliName => snakeCase(name);
-
- @override
- String get helpText => switch (this) {
- FlutterProjectType.app => '(default) Generate a Flutter application.',
- FlutterProjectType.skeleton =>
- 'Generate a List View / Detail View Flutter application that follows community best practices.',
- FlutterProjectType.package =>
- 'Generate a shareable Flutter project containing modular Dart code.',
- FlutterProjectType.plugin =>
- 'Generate a shareable Flutter project containing an API '
- 'in Dart code with a platform-specific implementation through method channels for Android, iOS, '
- 'Linux, macOS, Windows, web, or any combination of these.',
- FlutterProjectType.pluginFfi =>
- 'Generate a shareable Flutter project containing an API '
- 'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
- 'Linux, macOS, Windows, or any combination of these.',
- FlutterProjectType.packageFfi =>
- 'Generate a shareable Dart/Flutter project containing an API '
- 'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
- 'Linux, macOS, and Windows.',
- FlutterProjectType.module =>
- 'Generate a project to add a Flutter module to an existing Android or iOS application.',
- };
-
- static FlutterProjectType? fromCliName(String value) {
- for (final FlutterProjectType type in FlutterProjectType.values) {
- if (value == type.cliName) {
+ /// Parses and returns a [ParsedFlutterTemplateType], if any, for [cliName].
+ ///
+ /// If no match was found `null` is returned.
+ static ParsedFlutterTemplateType? fromCliName(String cliName) {
+ for (final ParsedFlutterTemplateType type in _values) {
+ if (cliName == type.cliName) {
return type;
}
}
return null;
}
- static List<FlutterProjectType> get enabledValues {
- return <FlutterProjectType>[
- for (final FlutterProjectType value in values)
- if (value != FlutterProjectType.packageFfi || featureFlags.isNativeAssetsEnabled) value,
- ];
+ /// Returns template types that are enabled based on the current [featureFlags].
+ static List<ParsedFlutterTemplateType> enabledValues(FeatureFlags featureFlags) {
+ return _values.toList()..retainWhere((ParsedFlutterTemplateType templateType) {
+ return templateType.isEnabled(featureFlags);
+ });
}
+
+ /// Whether the flag is enabled based on a flag being set.
+ bool isEnabled(FeatureFlags featureFlags) => true;
+}
+
+/// A [ParsedFlutterTemplateType] that is no longer operable.
+///
+/// The CLI can give a hint to a developer that the [cliName] _did_ use to exist,
+/// but does no longer, and provides [helpText] for other resources to use instead.
+enum RemovedFlutterTemplateType implements ParsedFlutterTemplateType {
+ skeleton(
+ helpText:
+ 'Formerly generated a list view / detail view Flutter application that '
+ 'followed some community best practices. For up to date resources, see '
+ 'https://flutter.github.io/samples, https://docs.flutter.dev/codelabs, '
+ 'and external resources such as https://flutter-builder.app/.',
+ );
+
+ const RemovedFlutterTemplateType({required this.helpText});
+
+ @override
+ bool isEnabled(FeatureFlags featureFlags) => true;
+
+ @override
+ final String helpText;
+
+ @override
+ String get cliName => snakeCase(name);
+}
+
+/// The result of parsing a recognized `--template` for `flutter create` and related commands.
+enum FlutterTemplateType implements ParsedFlutterTemplateType {
+ /// The default project with the user-managed host code.
+ ///
+ /// It is different than the "module" template in that it exposes and doesn't
+ /// manage the platform code.
+ app(helpText: '(default) Generate a Flutter application.'),
+
+ /// A project that has managed platform host code.
+ ///
+ /// It is an application with ephemeral .ios and .android directories that can be updated automatically.
+ module(
+ helpText:
+ 'Generate a project to add a Flutter module to an existing Android or iOS application.',
+ ),
+
+ /// A Flutter Dart package project.
+ ///
+ /// It doesn't have any native components, only Dart.
+ package(helpText: 'Generate a shareable Flutter project containing modular Dart code.'),
+
+ /// A Dart package project with external builds for native components.
+ packageFfi(
+ helpText:
+ 'Generate a shareable Dart/Flutter project containing an API '
+ 'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
+ 'Linux, macOS, and Windows.',
+ ),
+
+ /// A native plugin project.
+ plugin(
+ helpText:
+ 'Generate a shareable Flutter project containing an API '
+ 'in Dart code with a platform-specific implementation through method channels for Android, iOS, '
+ 'Linux, macOS, Windows, web, or any combination of these.',
+ ),
+
+ /// This is an FFI native plugin project.
+ pluginFfi(
+ helpText:
+ 'Generate a shareable Flutter project containing an API '
+ 'in Dart code with a platform-specific implementation through dart:ffi for Android, iOS, '
+ 'Linux, macOS, Windows, or any combination of these.',
+ );
+
+ const FlutterTemplateType({required this.helpText});
+
+ @override
+ bool isEnabled(FeatureFlags featureFlags) {
+ return switch (this) {
+ FlutterTemplateType.packageFfi => featureFlags.isNativeAssetsEnabled,
+ _ => true,
+ };
+ }
+
+ @override
+ final String helpText;
+
+ @override
+ String get cliName => snakeCase(name);
}
/// Verifies the expected yaml keys are present in the file.
@@ -135,7 +185,13 @@
}
}
if (_validateMetadataMap(yamlRoot, <String, Type>{'project_type': String}, _logger)) {
- _projectType = FlutterProjectType.fromCliName(yamlRoot['project_type'] as String);
+ final ParsedFlutterTemplateType? templateType = ParsedFlutterTemplateType.fromCliName(
+ yamlRoot['project_type'] as String,
+ );
+ _projectType = switch (templateType) {
+ RemovedFlutterTemplateType() || null => null,
+ FlutterTemplateType() => templateType,
+ };
}
final Object? migrationYaml = yamlRoot['migration'];
if (migrationYaml is YamlMap) {
@@ -148,7 +204,7 @@
required this.file,
required String? versionRevision,
required String? versionChannel,
- required FlutterProjectType? projectType,
+ required FlutterTemplateType? projectType,
required this.migrateConfig,
required Logger logger,
}) : _logger = logger,
@@ -165,8 +221,8 @@
String? _versionChannel;
String? get versionChannel => _versionChannel;
- FlutterProjectType? _projectType;
- FlutterProjectType? get projectType => _projectType;
+ FlutterTemplateType? _projectType;
+ FlutterTemplateType? get projectType => _projectType;
/// Metadata and configuration for the migrate command.
MigrateConfig migrateConfig;
diff --git a/packages/flutter_tools/lib/src/ios/application_package.dart b/packages/flutter_tools/lib/src/ios/application_package.dart
index e3d5e70..62f2c8b 100644
--- a/packages/flutter_tools/lib/src/ios/application_package.dart
+++ b/packages/flutter_tools/lib/src/ios/application_package.dart
@@ -201,7 +201,7 @@
}
String _templateImageAssetDirNameSuffix(String asset) =>
- globals.fs.path.join('app_shared', 'ios.tmpl', 'Runner', 'Assets.xcassets', asset);
+ globals.fs.path.join('app', 'ios.tmpl', 'Runner', 'Assets.xcassets', asset);
String get _appIconAsset => 'AppIcon.appiconset';
String get _launchImageAsset => 'LaunchImage.imageset';
diff --git a/packages/flutter_tools/lib/src/reporting/github_template.dart b/packages/flutter_tools/lib/src/reporting/github_template.dart
index 2d6bef1..b7ca3ed 100644
--- a/packages/flutter_tools/lib/src/reporting/github_template.dart
+++ b/packages/flutter_tools/lib/src/reporting/github_template.dart
@@ -129,7 +129,7 @@
return 'No pubspec in working directory.';
}
final FlutterProjectMetadata metadata = FlutterProjectMetadata(project.metadataFile, _logger);
- final FlutterProjectType? projectType = metadata.projectType;
+ final FlutterTemplateType? projectType = metadata.projectType;
final StringBuffer description =
StringBuffer()
..writeln('**Type**: ${projectType == null ? 'malformed' : projectType.cliName}')
diff --git a/packages/flutter_tools/lib/src/template.dart b/packages/flutter_tools/lib/src/template.dart
index 0843be0..6b6a7e8 100644
--- a/packages/flutter_tools/lib/src/template.dart
+++ b/packages/flutter_tools/lib/src/template.dart
@@ -173,13 +173,22 @@
required Logger logger,
required TemplateRenderer templateRenderer,
}) async {
+ // TODO(matanl): Remove this once https://github.com/flutter/packages/pull/8336 is merged and published.
+ // See https://github.com/flutter/flutter/issues/160692.
+ final List<String> imageNames;
+ if (names.contains('app')) {
+ // Emulates what used to happen when app_shared existed. It still exist in package:flutter_template_images.
+ imageNames = <String>[...names, 'app_shared'];
+ } else {
+ imageNames = names;
+ }
// All named templates are placed in the 'templates' directory
return Template._(
<Directory>[
for (final String name in names) templatePathProvider.directoryInPackage(name, fileSystem),
],
<Directory>[
- for (final String name in names)
+ for (final String name in imageNames)
if ((await templatePathProvider.imageDirectory(name, fileSystem, logger)).existsSync())
await templatePathProvider.imageDirectory(name, fileSystem, logger),
],
diff --git a/packages/flutter_tools/templates/README.md b/packages/flutter_tools/templates/README.md
deleted file mode 100644
index f3e5f6d..0000000
--- a/packages/flutter_tools/templates/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-This directory contains templates for `flutter create`.
-
-The `*_shared` subdirectories provide files for multiple templates.
-
-* `app_shared` for `app` and `skeleton`.
-* `plugin_shared` for (method channel) `plugin` and `plugin_ffi`.
-
-For example, there are two app templates: `app` (the counter app)
-and `skeleton` (the more advanced list view/detail view app).
-
-```plain
- ┌────────────┐
- │ app_shared │
- └──┬──────┬──┘
- │ │
- │ │
- ▼ ▼
-┌─────┐ ┌──────────┐
-│ app │ │ skeleton │
-└─────┘ └──────────┘
-```
-
-Thanks to `app_shared`, the templates for `app` and `skeleton` can contain
-only the files that are specific to them alone, and the rest is automatically
-kept in sync.
diff --git a/packages/flutter_tools/templates/app_shared/.gitignore.tmpl b/packages/flutter_tools/templates/app/.gitignore.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.gitignore.tmpl
rename to packages/flutter_tools/templates/app/.gitignore.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl b/packages/flutter_tools/templates/app/.idea/libraries/Dart_SDK.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/libraries/Dart_SDK.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl b/packages/flutter_tools/templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/modules.xml.tmpl b/packages/flutter_tools/templates/app/.idea/modules.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/modules.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/modules.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl b/packages/flutter_tools/templates/app/.idea/runConfigurations/main_dart.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/runConfigurations/main_dart.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/app/.idea/workspace.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/.idea/workspace.xml.tmpl
rename to packages/flutter_tools/templates/app/.idea/workspace.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/analysis_options.yaml.tmpl b/packages/flutter_tools/templates/app/analysis_options.yaml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/analysis_options.yaml.tmpl
rename to packages/flutter_tools/templates/app/analysis_options.yaml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/app/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl b/packages/flutter_tools/templates/app/android-java.tmpl/projectName_android.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl
rename to packages/flutter_tools/templates/app/android-java.tmpl/projectName_android.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl b/packages/flutter_tools/templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl
rename to packages/flutter_tools/templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/.gitignore b/packages/flutter_tools/templates/app/android.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/android.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values-night/styles.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values-night/styles.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values/styles.xml
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/main/res/values/styles.xml
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/gradle.properties.tmpl b/packages/flutter_tools/templates/app/android.tmpl/gradle.properties.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/gradle.properties.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/gradle.properties.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl b/packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/android.tmpl/settings.gradle.kts.tmpl b/packages/flutter_tools/templates/app/android.tmpl/settings.gradle.kts.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/android.tmpl/settings.gradle.kts.tmpl
rename to packages/flutter_tools/templates/app/android.tmpl/settings.gradle.kts.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.h
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.m
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/AppDelegate.m
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/main.m b/packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/main.m
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/Runner/main.m
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/Runner/main.m
diff --git a/packages/flutter_tools/templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl b/packages/flutter_tools/templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
rename to packages/flutter_tools/templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/AppDelegate.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/AppDelegate.swift
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h b/packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h
diff --git a/packages/flutter_tools/templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl b/packages/flutter_tools/templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
rename to packages/flutter_tools/templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/.gitignore b/packages/flutter_tools/templates/app/ios.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/ios.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Release.xcconfig b/packages/flutter_tools/templates/app/ios.tmpl/Flutter/Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Flutter/Release.xcconfig
rename to packages/flutter_tools/templates/app/ios.tmpl/Flutter/Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl b/packages/flutter_tools/templates/app/ios.tmpl/Runner/Info.plist.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl
rename to packages/flutter_tools/templates/app/ios.tmpl/Runner/Info.plist.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/.gitignore b/packages/flutter_tools/templates/app/linux.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/linux.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl b/packages/flutter_tools/templates/app/linux.tmpl/CMakeLists.txt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl
rename to packages/flutter_tools/templates/app/linux.tmpl/CMakeLists.txt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/flutter/CMakeLists.txt b/packages/flutter_tools/templates/app/linux.tmpl/flutter/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/flutter/CMakeLists.txt
rename to packages/flutter_tools/templates/app/linux.tmpl/flutter/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/CMakeLists.txt b/packages/flutter_tools/templates/app/linux.tmpl/runner/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/CMakeLists.txt
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/main.cc b/packages/flutter_tools/templates/app/linux.tmpl/runner/main.cc
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/main.cc
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/main.cc
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl b/packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.cc.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.cc.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.h b/packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/linux.tmpl/runner/my_application.h
rename to packages/flutter_tools/templates/app/linux.tmpl/runner/my_application.h
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/.gitignore b/packages/flutter_tools/templates/app/macos.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/macos.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
copy from packages/flutter_tools/templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
copy to packages/flutter_tools/templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/AppDelegate.swift b/packages/flutter_tools/templates/app/macos.tmpl/Runner/AppDelegate.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/AppDelegate.swift
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/AppDelegate.swift
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Release.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Release.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements b/packages/flutter_tools/templates/app/macos.tmpl/Runner/DebugProfile.entitlements
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/DebugProfile.entitlements
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Info.plist b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Info.plist
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Info.plist
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Info.plist
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift b/packages/flutter_tools/templates/app/macos.tmpl/Runner/MainFlutterWindow.swift
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/MainFlutterWindow.swift
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Release.entitlements b/packages/flutter_tools/templates/app/macos.tmpl/Runner/Release.entitlements
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/Runner/Release.entitlements
rename to packages/flutter_tools/templates/app/macos.tmpl/Runner/Release.entitlements
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl b/packages/flutter_tools/templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
rename to packages/flutter_tools/templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/projectName.iml.tmpl b/packages/flutter_tools/templates/app/projectName.iml.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/projectName.iml.tmpl
rename to packages/flutter_tools/templates/app/projectName.iml.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/favicon.png.copy.tmpl b/packages/flutter_tools/templates/app/web/favicon.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/favicon.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/favicon.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-192.png.copy.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-192.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-192.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-192.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-512.png.copy.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-512.png.copy.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-512.png.copy.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-512.png.copy.tmpl
Binary files differ
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-maskable-192.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-maskable-192.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl b/packages/flutter_tools/templates/app/web/icons/Icon-maskable-512.png.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl
rename to packages/flutter_tools/templates/app/web/icons/Icon-maskable-512.png.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/index.html.tmpl b/packages/flutter_tools/templates/app/web/index.html.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/index.html.tmpl
rename to packages/flutter_tools/templates/app/web/index.html.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/web/manifest.json.tmpl b/packages/flutter_tools/templates/app/web/manifest.json.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/web/manifest.json.tmpl
rename to packages/flutter_tools/templates/app/web/manifest.json.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/.gitignore b/packages/flutter_tools/templates/app/windows.tmpl/.gitignore
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/.gitignore
rename to packages/flutter_tools/templates/app/windows.tmpl/.gitignore
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/CMakeLists.txt.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/CMakeLists.txt.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/flutter/CMakeLists.txt b/packages/flutter_tools/templates/app/windows.tmpl/flutter/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/flutter/CMakeLists.txt
rename to packages/flutter_tools/templates/app/windows.tmpl/flutter/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/CMakeLists.txt b/packages/flutter_tools/templates/app/windows.tmpl/runner/CMakeLists.txt
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/CMakeLists.txt
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/CMakeLists.txt
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/Runner.rc.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/Runner.rc.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/flutter_window.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/main.cpp.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/main.cpp.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/main.cpp.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/main.cpp.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resource.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/resource.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resource.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/resource.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl b/packages/flutter_tools/templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/runner.exe.manifest b/packages/flutter_tools/templates/app/windows.tmpl/runner/runner.exe.manifest
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/runner.exe.manifest
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/runner.exe.manifest
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/utils.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/utils.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/utils.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/utils.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/utils.h
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.cpp
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.cpp
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.cpp
diff --git a/packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.h
similarity index 100%
rename from packages/flutter_tools/templates/app_shared/windows.tmpl/runner/win32_window.h
rename to packages/flutter_tools/templates/app/windows.tmpl/runner/win32_window.h
diff --git a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/packages/flutter_tools/templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IDEDidComputeMac32BitWarning</key>
- <true/>
-</dict>
-</plist>
diff --git a/packages/flutter_tools/templates/skeleton/README.md.tmpl b/packages/flutter_tools/templates/skeleton/README.md.tmpl
deleted file mode 100644
index b7e3461a..0000000
--- a/packages/flutter_tools/templates/skeleton/README.md.tmpl
+++ /dev/null
@@ -1,29 +0,0 @@
-# {{projectName}}
-
-{{description}}
-
-## Getting Started
-
-This project is a starting point for a Flutter application that follows the
-[simple app state management
-tutorial](https://flutter.dev/to/state-management-sample).
-
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
-
-## Assets
-
-The `assets` directory houses images, fonts, and any other files you want to
-include with your application.
-
-The `assets/images` directory contains [resolution-aware
-images](https://flutter.dev/to/resolution-aware-images).
-
-## Localization
-
-This project generates localized messages based on arb files found in
-the `lib/src/localization` directory.
-
-To support additional languages, please visit the tutorial on
-[Internationalizing Flutter apps](https://flutter.dev/to/internationalization).
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl b/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl
deleted file mode 100644
index e69de29..0000000
--- a/packages/flutter_tools/templates/skeleton/assets/images/flutter_logo.png.img.tmpl
+++ /dev/null
diff --git a/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl b/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl
deleted file mode 100644
index d480072..0000000
--- a/packages/flutter_tools/templates/skeleton/l10n.yaml.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-arb-dir: lib/src/localization
-template-arb-file: app_en.arb
-output-localization-file: app_localizations.dart
diff --git a/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl
deleted file mode 100644
index eb568f2..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/main.dart.tmpl
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'src/app.dart';
-import 'src/settings/settings_controller.dart';
-import 'src/settings/settings_service.dart';
-
-void main() async {
- // Set up the SettingsController, which will glue user settings to multiple
- // Flutter Widgets.
- final settingsController = SettingsController(SettingsService());
-
- // Load the user's preferred theme while the splash screen is displayed.
- // This prevents a sudden theme change when the app is first displayed.
- await settingsController.loadSettings();
-
- // Run the app and pass in the SettingsController. The app listens to the
- // SettingsController for changes, then passes it further down to the
- // SettingsView.
- runApp(MyApp(settingsController: settingsController));
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl
deleted file mode 100644
index 7ba2c2f..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/app.dart.tmpl
+++ /dev/null
@@ -1,85 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-import 'package:flutter_localizations/flutter_localizations.dart';
-
-import 'sample_feature/sample_item_details_view.dart';
-import 'sample_feature/sample_item_list_view.dart';
-import 'settings/settings_controller.dart';
-import 'settings/settings_view.dart';
-
-/// The Widget that configures your application.
-class MyApp extends StatelessWidget {
- const MyApp({
- super.key,
- required this.settingsController,
- });
-
- final SettingsController settingsController;
-
- @override
- Widget build(BuildContext context) {
- // Glue the SettingsController to the MaterialApp.
- //
- // The ListenableBuilder Widget listens to the SettingsController for changes.
- // Whenever the user updates their settings, the MaterialApp is rebuilt.
- return ListenableBuilder(
- listenable: settingsController,
- builder: (BuildContext context, Widget? child) {
- return MaterialApp(
- // Providing a restorationScopeId allows the Navigator built by the
- // MaterialApp to restore the navigation stack when a user leaves and
- // returns to the app after it has been killed while running in the
- // background.
- restorationScopeId: 'app',
-
- // Provide the generated AppLocalizations to the MaterialApp. This
- // allows descendant Widgets to display the correct translations
- // depending on the user's locale.
- localizationsDelegates: const [
- AppLocalizations.delegate,
- GlobalMaterialLocalizations.delegate,
- GlobalWidgetsLocalizations.delegate,
- GlobalCupertinoLocalizations.delegate,
- ],
- supportedLocales: const [
- Locale('en', ''), // English, no country code
- ],
-
- // Use AppLocalizations to configure the correct application title
- // depending on the user's locale.
- //
- // The appTitle is defined in .arb files found in the localization
- // directory.
- onGenerateTitle: (BuildContext context) =>
- AppLocalizations.of(context)!.appTitle,
-
- // Define a light and dark color theme. Then, read the user's
- // preferred ThemeMode (light, dark, or system default) from the
- // SettingsController to display the correct theme.
- theme: ThemeData(),
- darkTheme: ThemeData.dark(),
- themeMode: settingsController.themeMode,
-
- // Define a function to handle named routes in order to support
- // Flutter web url navigation and deep linking.
- onGenerateRoute: (RouteSettings routeSettings) {
- return MaterialPageRoute<void>(
- settings: routeSettings,
- builder: (BuildContext context) {
- switch (routeSettings.name) {
- case SettingsView.routeName:
- return SettingsView(controller: settingsController);
- case SampleItemDetailsView.routeName:
- return const SampleItemDetailsView();
- case SampleItemListView.routeName:
- default:
- return const SampleItemListView();
- }
- },
- );
- },
- );
- },
- );
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl
deleted file mode 100644
index 5c21115..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/localization/app_en.arb.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "appTitle": "{{projectName}}",
- "@appTitle": {
- "description": "The title of the application"
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl
deleted file mode 100644
index b376e0d..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-/// A placeholder class that represents an entity or model.
-class SampleItem {
- const SampleItem(this.id);
-
- final int id;
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl
deleted file mode 100644
index 37df4a8..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'package:flutter/material.dart';
-
-/// Displays detailed information about a SampleItem.
-class SampleItemDetailsView extends StatelessWidget {
- const SampleItemDetailsView({super.key});
-
- static const routeName = '/sample_item';
-
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text('Item Details'),
- ),
- body: const Center(
- child: Text('More Information Here'),
- ),
- );
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl
deleted file mode 100644
index 78066e9..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl
+++ /dev/null
@@ -1,71 +0,0 @@
-import 'package:flutter/material.dart';
-
-import '../settings/settings_view.dart';
-import 'sample_item.dart';
-import 'sample_item_details_view.dart';
-
-/// Displays a list of SampleItems.
-class SampleItemListView extends StatelessWidget {
- const SampleItemListView({
- super.key,
- this.items = const [SampleItem(1), SampleItem(2), SampleItem(3)],
- });
-
- static const routeName = '/';
-
- final List<SampleItem> items;
-
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text('Sample Items'),
- actions: [
- IconButton(
- icon: const Icon(Icons.settings),
- onPressed: () {
- // Navigate to the settings page. If the user leaves and returns
- // to the app after it has been killed while running in the
- // background, the navigation stack is restored.
- Navigator.restorablePushNamed(context, SettingsView.routeName);
- },
- ),
- ],
- ),
-
- // To work with lists that may contain a large number of items, it’s best
- // to use the ListView.builder constructor.
- //
- // In contrast to the default ListView constructor, which requires
- // building all Widgets up front, the ListView.builder constructor lazily
- // builds Widgets as they’re scrolled into view.
- body: ListView.builder(
- // Providing a restorationId allows the ListView to restore the
- // scroll position when a user leaves and returns to the app after it
- // has been killed while running in the background.
- restorationId: 'sampleItemListView',
- itemCount: items.length,
- itemBuilder: (BuildContext context, int index) {
- final item = items[index];
-
- return ListTile(
- title: Text('SampleItem ${item.id}'),
- leading: const CircleAvatar(
- // Display the Flutter Logo image asset.
- foregroundImage: AssetImage('assets/images/flutter_logo.png'),
- ),
- onTap: () {
- // Navigate to the details page. If the user leaves and returns to
- // the app after it has been killed while running in the
- // background, the navigation stack is restored.
- Navigator.restorablePushNamed(
- context,
- SampleItemDetailsView.routeName,
- );
- }
- );
- },
- ),
- );
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl
deleted file mode 100644
index e32c0df..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_controller.dart.tmpl
+++ /dev/null
@@ -1,50 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'settings_service.dart';
-
-/// A class that many Widgets can interact with to read user settings, update
-/// user settings, or listen to user settings changes.
-///
-/// Controllers glue Data Services to Flutter Widgets. The SettingsController
-/// uses the SettingsService to store and retrieve user settings.
-class SettingsController with ChangeNotifier {
- SettingsController(this._settingsService);
-
- // Make SettingsService a private variable so it is not used directly.
- final SettingsService _settingsService;
-
- // Make ThemeMode a private variable so it is not updated directly without
- // also persisting the changes with the SettingsService.
- late ThemeMode _themeMode;
-
- // Allow Widgets to read the user's preferred ThemeMode.
- ThemeMode get themeMode => _themeMode;
-
- /// Load the user's settings from the SettingsService. It may load from a
- /// local database or the internet. The controller only knows it can load the
- /// settings from the service.
- Future<void> loadSettings() async {
- _themeMode = await _settingsService.themeMode();
-
- // Important! Inform listeners a change has occurred.
- notifyListeners();
- }
-
- /// Update and persist the ThemeMode based on the user's selection.
- Future<void> updateThemeMode(ThemeMode? newThemeMode) async {
- if (newThemeMode == null) return;
-
- // Do not perform any work if new and old ThemeMode are identical
- if (newThemeMode == _themeMode) return;
-
- // Otherwise, store the new ThemeMode in memory
- _themeMode = newThemeMode;
-
- // Important! Inform listeners a change has occurred.
- notifyListeners();
-
- // Persist the changes to a local database or the internet using the
- // SettingService.
- await _settingsService.updateThemeMode(newThemeMode);
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl
deleted file mode 100644
index 6f94dc3..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_service.dart.tmpl
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'package:flutter/material.dart';
-
-/// A service that stores and retrieves user settings.
-///
-/// By default, this class does not persist user settings. If you'd like to
-/// persist the user settings locally, use the shared_preferences package. If
-/// you'd like to store settings on a web server, use the http package.
-class SettingsService {
- /// Loads the User's preferred ThemeMode from local or remote storage.
- Future<ThemeMode> themeMode() async => ThemeMode.system;
-
- /// Persists the user's preferred ThemeMode to local or remote storage.
- Future<void> updateThemeMode(ThemeMode theme) async {
- // Use the shared_preferences package to persist settings locally or the
- // http package to persist settings over the network.
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl b/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl
deleted file mode 100644
index 7aae644..0000000
--- a/packages/flutter_tools/templates/skeleton/lib/src/settings/settings_view.dart.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'settings_controller.dart';
-
-/// Displays the various settings that can be customized by the user.
-///
-/// When a user changes a setting, the SettingsController is updated and
-/// Widgets that listen to the SettingsController are rebuilt.
-class SettingsView extends StatelessWidget {
- const SettingsView({super.key, required this.controller});
-
- static const routeName = '/settings';
-
- final SettingsController controller;
-
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text('Settings'),
- ),
- body: Padding(
- padding: const EdgeInsets.all(16),
- // Glue the SettingsController to the theme selection DropdownButton.
- //
- // When a user selects a theme from the dropdown list, the
- // SettingsController is updated, which rebuilds the MaterialApp.
- child: DropdownButton<ThemeMode>(
- // Read the selected themeMode from the controller
- value: controller.themeMode,
- // Call the updateThemeMode method any time the user selects a theme.
- onChanged: controller.updateThemeMode,
- items: const [
- DropdownMenuItem(
- value: ThemeMode.system,
- child: Text('System Theme'),
- ),
- DropdownMenuItem(
- value: ThemeMode.light,
- child: Text('Light Theme'),
- ),
- DropdownMenuItem(
- value: ThemeMode.dark,
- child: Text('Dark Theme'),
- )
- ],
- ),
- ),
- );
- }
-}
diff --git a/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl b/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl
deleted file mode 100644
index f4f092f..0000000
--- a/packages/flutter_tools/templates/skeleton/pubspec.yaml.tmpl
+++ /dev/null
@@ -1,32 +0,0 @@
-name: {{projectName}}
-description: {{description}}
-
-# Prevent accidental publishing to pub.dev.
-publish_to: 'none'
-
-version: 1.0.0+1
-
-environment:
- sdk: {{dartSdkVersionBounds}}
-
-dependencies:
- flutter:
- sdk: flutter
- flutter_localizations:
- sdk: flutter
-
-dev_dependencies:
- flutter_test:
- sdk: flutter
-
- flutter_lints: ^5.0.0
-
-flutter:
- uses-material-design: true
-
- # Enable generation of localized Strings from arb files.
- generate: true
-
- assets:
- # Add assets from the images directory to the application.
- - assets/images/
diff --git a/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl b/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl
deleted file mode 100644
index 746ac01..0000000
--- a/packages/flutter_tools/templates/skeleton/test/implementation_test.dart.test.tmpl
+++ /dev/null
@@ -1,73 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:{{projectName}}/src/app.dart';
-import 'package:{{projectName}}/src/sample_feature/sample_item_details_view.dart';
-import 'package:{{projectName}}/src/settings/settings_controller.dart';
-import 'package:{{projectName}}/src/settings/settings_service.dart';
-import 'package:{{projectName}}/src/settings/settings_view.dart';
-
-void main() {
- group('ListDetailApp', () {
- testWidgets('displays a list of items', (WidgetTester tester) async {
- final service = SettingsService();
- final controller = SettingsController(service);
-
- await controller.loadSettings();
- await tester.pumpWidget(MyApp(settingsController: controller));
-
- expect(find.byType(ListTile), findsNWidgets(3));
- });
-
- testWidgets('navigates to an item page', (WidgetTester tester) async {
- final service = SettingsService();
- final controller = SettingsController(service);
-
- await controller.loadSettings();
- await tester.pumpWidget(MyApp(settingsController: controller));
- await tester.tap(find.byType(ListTile).first);
- await tester.pumpAndSettle();
-
- expect(find.byType(SampleItemDetailsView), findsOneWidget);
- });
-
- testWidgets('changes the app theme', (WidgetTester tester) async {
- final service = SettingsService();
- final controller = SettingsController(service);
-
- // Navigate to Settings
- await controller.loadSettings();
- await tester.pumpWidget(MyApp(settingsController: controller));
- await tester.tap(find.byType(IconButton));
- await tester.pumpAndSettle();
-
- // Verify defaults in place
- expect(controller.themeMode, ThemeMode.system);
- expect(find.byType(SettingsView), findsOneWidget);
- expect(findApp(ThemeMode.system), findsOneWidget);
-
- // Change to Dark Theme
- await tester.tap(find.text('System Theme'));
- await tester.pumpAndSettle();
- await tester.tap(find.text('Dark Theme').last);
- await tester.pumpAndSettle();
-
- // Verify Dark Theme rendered
- expect(controller.themeMode, ThemeMode.dark);
- expect(findApp(ThemeMode.dark), findsOneWidget);
-
- // Change to Light Theme
- await tester.tap(find.text('Dark Theme'));
- await tester.pumpAndSettle();
- await tester.tap(find.text('Light Theme').last);
- await tester.pumpAndSettle();
-
- // Verify light theme enabled
- expect(controller.themeMode, ThemeMode.light);
- expect(findApp(ThemeMode.light), findsOneWidget);
- });
- });
-}
-
-Finder findApp(ThemeMode themeMode) => find.byWidgetPredicate(
- (widget) => widget is MaterialApp && widget.themeMode == themeMode,
-);
diff --git a/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl b/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl
deleted file mode 100644
index 026f329..0000000
--- a/packages/flutter_tools/templates/skeleton/test/unit_test.dart.tmpl
+++ /dev/null
@@ -1,15 +0,0 @@
-// This is an example unit test.
-//
-// A unit test tests a single function, method, or class. To learn more about
-// writing unit tests, visit
-// https://flutter.dev/to/unit-testing
-
-import 'package:flutter_test/flutter_test.dart';
-
-void main() {
- group('Plus Operator', () {
- test('should add two numbers together', () {
- expect(1 + 1, 2);
- });
- });
-}
diff --git a/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl b/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl
deleted file mode 100644
index 1d8332f..0000000
--- a/packages/flutter_tools/templates/skeleton/test/widget_test.dart.tmpl
+++ /dev/null
@@ -1,31 +0,0 @@
-// This is an example Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility in the flutter_test package. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-//
-// Visit https://flutter.dev/to/widget-testing for
-// more information about Widget testing.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-void main() {
- group('MyWidget', () {
- testWidgets('should display a string of text', (WidgetTester tester) async {
- // Define a Widget
- const myWidget = MaterialApp(
- home: Scaffold(
- body: Text('Hello'),
- ),
- );
-
- // Build myWidget and trigger a frame.
- await tester.pumpWidget(myWidget);
-
- // Verify myWidget shows some text
- expect(find.byType(Text), findsOneWidget);
- });
- });
-}
diff --git a/packages/flutter_tools/templates/template_manifest.json b/packages/flutter_tools/templates/template_manifest.json
index 70b73ae..3b8ff3b 100644
--- a/packages/flutter_tools/templates/template_manifest.json
+++ b/packages/flutter_tools/templates/template_manifest.json
@@ -1,388 +1,368 @@
{
- "version": 1.0,
- "_comment": "A listing of all possible template output files. Files ending in .img.tmpl correspond to files checked in to the flutter_template_images package in the flutter/packages repo, located at the same path, excluding the .img.tmpl suffix.",
- "files": [
- "templates/app/lib/main.dart.tmpl",
- "templates/app/pubspec.yaml.tmpl",
- "templates/app/README.md.tmpl",
+ "version": 1.0,
+ "_comment": "A listing of all possible template output files. Files ending in .img.tmpl correspond to files checked in to the flutter_template_images package in the flutter/packages repo, located at the same path, excluding the .img.tmpl suffix.",
+ "files": [
+ "templates/app/.gitignore.tmpl",
+ "templates/app/.idea/libraries/Dart_SDK.xml.tmpl",
+ "templates/app/.idea/libraries/KotlinJavaRuntime.xml.tmpl",
+ "templates/app/.idea/modules.xml.tmpl",
+ "templates/app/.idea/runConfigurations/main_dart.xml.tmpl",
+ "templates/app/.idea/workspace.xml.tmpl",
+ "templates/app/.metadata.tmpl",
+ "templates/app/analysis_options.yaml.tmpl",
+ "templates/app/android-java.tmpl/app/build.gradle.kts.tmpl",
+ "templates/app/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl",
+ "templates/app/android-java.tmpl/build.gradle.kts.tmpl",
+ "templates/app/android-java.tmpl/projectName_android.iml.tmpl",
+ "templates/app/android-kotlin.tmpl/app/build.gradle.kts.tmpl",
+ "templates/app/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl",
+ "templates/app/android-kotlin.tmpl/build.gradle.kts.tmpl",
+ "templates/app/android-kotlin.tmpl/projectName_android.iml.tmpl",
+ "templates/app/android.tmpl/.gitignore",
+ "templates/app/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl",
+ "templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl",
+ "templates/app/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml",
+ "templates/app/android.tmpl/app/src/main/res/drawable/launch_background.xml",
+ "templates/app/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png",
+ "templates/app/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png",
+ "templates/app/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
+ "templates/app/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
+ "templates/app/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
+ "templates/app/android.tmpl/app/src/main/res/values-night/styles.xml",
+ "templates/app/android.tmpl/app/src/main/res/values/styles.xml",
+ "templates/app/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl",
+ "templates/app/android.tmpl/gradle.properties.tmpl",
+ "templates/app/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl",
+ "templates/app/android.tmpl/settings.gradle.kts.tmpl",
+ "templates/app/android.tmpl/settings.gradle",
+ "templates/app/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+ "templates/app/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+ "templates/app/ios-objc.tmpl/Runner/AppDelegate.h",
+ "templates/app/ios-objc.tmpl/Runner/AppDelegate.m",
+ "templates/app/ios-objc.tmpl/Runner/main.m",
+ "templates/app/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl",
+ "templates/app/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+ "templates/app/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+ "templates/app/ios-swift.tmpl/Runner/AppDelegate.swift",
+ "templates/app/ios-swift.tmpl/Runner/Runner-Bridging-Header.h",
+ "templates/app/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl",
+ "templates/app/ios.tmpl/.gitignore",
+ "templates/app/ios.tmpl/Flutter/AppFrameworkInfo.plist",
+ "templates/app/ios.tmpl/Flutter/Debug.xcconfig",
+ "templates/app/ios.tmpl/Flutter/Release.xcconfig",
+ "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
+ "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/app/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/app/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
+ "templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/app/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl",
+ "templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
+ "templates/app/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard",
+ "templates/app/ios.tmpl/Runner/Base.lproj/Main.storyboard",
+ "templates/app/ios.tmpl/Runner/Info.plist.tmpl",
+ "templates/app/lib/main.dart.tmpl",
+ "templates/app/linux.tmpl/.gitignore",
+ "templates/app/linux.tmpl/CMakeLists.txt.tmpl",
+ "templates/app/linux.tmpl/flutter/CMakeLists.txt",
+ "templates/app/linux.tmpl/runner/CMakeLists.txt",
+ "templates/app/linux.tmpl/runner/main.cc",
+ "templates/app/linux.tmpl/runner/my_application.cc.tmpl",
+ "templates/app/linux.tmpl/runner/my_application.cc",
+ "templates/app/linux.tmpl/runner/my_application.h",
+ "templates/app/macos.tmpl/.gitignore",
+ "templates/app/macos.tmpl/Flutter/Flutter-Debug.xcconfig",
+ "templates/app/macos.tmpl/Flutter/Flutter-Release.xcconfig",
+ "templates/app/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
+ "templates/app/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/app/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
+ "templates/app/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
+ "templates/app/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/app/macos.tmpl/Runner/AppDelegate.swift",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl",
+ "templates/app/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
+ "templates/app/macos.tmpl/Runner/Base.lproj/MainMenu.xib",
+ "templates/app/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl",
+ "templates/app/macos.tmpl/Runner/Configs/Debug.xcconfig",
+ "templates/app/macos.tmpl/Runner/Configs/Release.xcconfig",
+ "templates/app/macos.tmpl/Runner/Configs/Warnings.xcconfig",
+ "templates/app/macos.tmpl/Runner/DebugProfile.entitlements",
+ "templates/app/macos.tmpl/Runner/Info.plist",
+ "templates/app/macos.tmpl/Runner/MainFlutterWindow.swift",
+ "templates/app/macos.tmpl/Runner/Release.entitlements",
+ "templates/app/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl",
+ "templates/app/projectName.iml.tmpl",
+ "templates/app/pubspec.yaml.tmpl",
+ "templates/app/README.md.tmpl",
+ "templates/app/web/favicon.png.copy.tmpl",
+ "templates/app/web/icons/Icon-192.png.copy.tmpl",
+ "templates/app/web/icons/Icon-512.png.copy.tmpl",
+ "templates/app/web/icons/Icon-maskable-192.png.img.tmpl",
+ "templates/app/web/icons/Icon-maskable-512.png.img.tmpl",
+ "templates/app/web/index.html.tmpl",
+ "templates/app/web/manifest.json.tmpl",
+ "templates/app/windows.tmpl/.gitignore",
+ "templates/app/windows.tmpl/CMakeLists.txt.tmpl",
+ "templates/app/windows.tmpl/flutter/CMakeLists.txt",
+ "templates/app/windows.tmpl/runner/CMakeLists.txt",
+ "templates/app/windows.tmpl/runner/flutter_window.cpp",
+ "templates/app/windows.tmpl/runner/flutter_window.h",
+ "templates/app/windows.tmpl/runner/main.cpp.tmpl",
+ "templates/app/windows.tmpl/runner/resource.h",
+ "templates/app/windows.tmpl/runner/resources/app_icon.ico.img.tmpl",
+ "templates/app/windows.tmpl/runner/runner.exe.manifest",
+ "templates/app/windows.tmpl/runner/Runner.rc.tmpl",
+ "templates/app/windows.tmpl/runner/utils.cpp",
+ "templates/app/windows.tmpl/runner/utils.h",
+ "templates/app/windows.tmpl/runner/win32_window.cpp",
+ "templates/app/windows.tmpl/runner/win32_window.h",
- "templates/app_shared/.gitignore.tmpl",
- "templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl",
- "templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl",
- "templates/app_shared/.idea/modules.xml.tmpl",
- "templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl",
- "templates/app_shared/.idea/workspace.xml.tmpl",
- "templates/app_shared/.metadata.tmpl",
- "templates/app_shared/analysis_options.yaml.tmpl",
- "templates/app_shared/android-java.tmpl/app/build.gradle.kts.tmpl",
- "templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl",
- "templates/app_shared/android-java.tmpl/build.gradle.kts.tmpl",
- "templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl",
- "templates/app_shared/android-kotlin.tmpl/app/build.gradle.kts.tmpl",
- "templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl",
- "templates/app_shared/android-kotlin.tmpl/build.gradle.kts.tmpl",
- "templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl",
- "templates/app_shared/android.tmpl/.gitignore",
- "templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl",
- "templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl",
- "templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml",
- "templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml",
- "templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png",
- "templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png",
- "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png",
- "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png",
- "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png",
- "templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml",
- "templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml",
- "templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl",
- "templates/app_shared/android.tmpl/gradle.properties.tmpl",
- "templates/app_shared/android.tmpl/settings.gradle.kts.tmpl",
- "templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties.tmpl",
- "templates/app_shared/android.tmpl/settings.gradle",
- "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
- "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
- "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h",
- "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m",
- "templates/app_shared/ios-objc.tmpl/Runner/main.m",
- "templates/app_shared/ios-objc.tmpl/RunnerTests/RunnerTests.m.tmpl",
- "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
- "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
- "templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift",
- "templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h",
- "templates/app_shared/ios-swift.tmpl/RunnerTests/RunnerTests.swift.tmpl",
- "templates/app_shared/ios.tmpl/.gitignore",
- "templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist",
- "templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig",
- "templates/app_shared/ios.tmpl/Flutter/Release.xcconfig",
- "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
- "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
- "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png.img.tmpl",
- "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
- "templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard",
- "templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard",
- "templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl",
- "templates/app_shared/linux.tmpl/.gitignore",
- "templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl",
- "templates/app_shared/linux.tmpl/flutter/CMakeLists.txt",
- "templates/app_shared/linux.tmpl/runner/CMakeLists.txt",
- "templates/app_shared/linux.tmpl/runner/main.cc",
- "templates/app_shared/linux.tmpl/runner/my_application.cc",
- "templates/app_shared/linux.tmpl/runner/my_application.cc.tmpl",
- "templates/app_shared/linux.tmpl/runner/my_application.h",
- "templates/app_shared/macos.tmpl/.gitignore",
- "templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig",
- "templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig",
- "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl",
- "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl",
- "templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata",
- "templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/app_shared/macos.tmpl/Runner/AppDelegate.swift",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png.img.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
- "templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib",
- "templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl",
- "templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig",
- "templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig",
- "templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig",
- "templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements",
- "templates/app_shared/macos.tmpl/Runner/Info.plist",
- "templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift",
- "templates/app_shared/macos.tmpl/Runner/Release.entitlements",
- "templates/app_shared/macos.tmpl/RunnerTests/RunnerTests.swift.tmpl",
- "templates/app_shared/projectName.iml.tmpl",
- "templates/app_shared/web/favicon.png.copy.tmpl",
- "templates/app_shared/web/icons/Icon-192.png.copy.tmpl",
- "templates/app_shared/web/icons/Icon-512.png.copy.tmpl",
- "templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl",
- "templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl",
- "templates/app_shared/web/index.html.tmpl",
- "templates/app_shared/web/manifest.json.tmpl",
- "templates/app_shared/windows.tmpl/.gitignore",
- "templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl",
- "templates/app_shared/windows.tmpl/flutter/CMakeLists.txt",
- "templates/app_shared/windows.tmpl/runner/CMakeLists.txt",
- "templates/app_shared/windows.tmpl/runner/flutter_window.cpp",
- "templates/app_shared/windows.tmpl/runner/flutter_window.h",
- "templates/app_shared/windows.tmpl/runner/main.cpp.tmpl",
- "templates/app_shared/windows.tmpl/runner/resource.h",
- "templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl",
- "templates/app_shared/windows.tmpl/runner/runner.exe.manifest",
- "templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl",
- "templates/app_shared/windows.tmpl/runner/utils.cpp",
- "templates/app_shared/windows.tmpl/runner/utils.h",
- "templates/app_shared/windows.tmpl/runner/win32_window.cpp",
- "templates/app_shared/windows.tmpl/runner/win32_window.h",
+ "templates/app_test_widget/test/widget_test.dart.tmpl",
- "templates/app_test_widget/test/widget_test.dart.tmpl",
+ "templates/app_integration_test/integration_test/plugin_integration_test.dart.tmpl",
- "templates/app_integration_test/integration_test/plugin_integration_test.dart.tmpl",
+ "templates/cocoapods/Podfile-ios-objc",
+ "templates/cocoapods/Podfile-ios-swift",
+ "templates/cocoapods/Podfile-macos",
- "templates/cocoapods/Podfile-ios-objc",
- "templates/cocoapods/Podfile-ios-swift",
- "templates/cocoapods/Podfile-macos",
+ "templates/module/android/deferred_component/build.gradle.tmpl",
+ "templates/module/android/deferred_component/src/main/AndroidManifest.xml.tmpl",
+ "templates/module/android/gradle/build.gradle.tmpl",
+ "templates/module/android/gradle/gradle.properties.tmpl",
+ "templates/module/android/gradle/settings.gradle.tmpl",
+ "templates/module/android/gradle/src/main/AndroidManifest.xml.tmpl",
+ "templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl",
+ "templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl",
+ "templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl",
+ "templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml",
+ "templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png",
+ "templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml",
+ "templates/module/android/host_app_editable/settings.gradle.copy.tmpl",
+ "templates/module/android/host_app_ephemeral/settings.gradle.tmpl",
+ "templates/module/android/library/Flutter.tmpl/build.gradle.tmpl",
+ "templates/module/android/library/Flutter.tmpl/flutter.iml.copy.tmpl",
+ "templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
+ "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java.tmpl",
+ "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java.tmpl",
+ "templates/module/android/library/include_flutter.groovy.copy.tmpl",
+ "templates/module/android/library/settings.gradle.copy.tmpl",
+ "templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl",
+ "templates/module/android/library_new_embedding/Flutter.tmpl/flutter.iml.copy.tmpl",
+ "templates/module/android/library_new_embedding/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
+ "templates/module/android/library_new_embedding/include_flutter.groovy.copy.tmpl",
+ "templates/module/android/library_new_embedding/settings.gradle.copy.tmpl",
+ "templates/module/common/.gitignore.tmpl",
+ "templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl",
+ "templates/module/common/.idea/modules.xml.tmpl",
+ "templates/module/common/.idea/workspace.xml.tmpl",
+ "templates/module/common/.metadata.tmpl",
+ "templates/module/common/analysis_options.yaml.tmpl",
+ "templates/module/common/lib/main.dart.tmpl",
+ "templates/module/common/projectName.iml.tmpl",
+ "templates/module/common/projectName_android.iml.tmpl",
+ "templates/module/common/pubspec.yaml.tmpl",
+ "templates/module/common/README.md.tmpl",
+ "templates/module/common/test/widget_test.dart.tmpl",
+ "templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig",
+ "templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig",
+ "templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl",
+ "templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m",
+ "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl",
+ "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
+ "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme",
+ "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
+ "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig",
+ "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig",
+ "templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl",
+ "templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m",
+ "templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist",
+ "templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl",
+ "templates/module/ios/library/Flutter.tmpl/README.md",
+ "templates/module/README.md",
- "templates/module/android/deferred_component/build.gradle.tmpl",
- "templates/module/android/deferred_component/src/main/AndroidManifest.xml.tmpl",
- "templates/module/android/gradle/build.gradle.tmpl",
- "templates/module/android/gradle/gradle.properties.tmpl",
- "templates/module/android/gradle/settings.gradle.tmpl",
- "templates/module/android/gradle/src/main/AndroidManifest.xml.tmpl",
- "templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl",
- "templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl",
- "templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl",
- "templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml",
- "templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png",
- "templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml",
- "templates/module/android/host_app_editable/settings.gradle.copy.tmpl",
- "templates/module/android/host_app_ephemeral/settings.gradle.tmpl",
- "templates/module/android/library/Flutter.tmpl/build.gradle.tmpl",
- "templates/module/android/library/Flutter.tmpl/flutter.iml.copy.tmpl",
- "templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
- "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java.tmpl",
- "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java.tmpl",
- "templates/module/android/library/include_flutter.groovy.copy.tmpl",
- "templates/module/android/library/settings.gradle.copy.tmpl",
- "templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl",
- "templates/module/android/library_new_embedding/Flutter.tmpl/flutter.iml.copy.tmpl",
- "templates/module/android/library_new_embedding/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl",
- "templates/module/android/library_new_embedding/include_flutter.groovy.copy.tmpl",
- "templates/module/android/library_new_embedding/settings.gradle.copy.tmpl",
- "templates/module/common/.gitignore.tmpl",
- "templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl",
- "templates/module/common/.idea/modules.xml.tmpl",
- "templates/module/common/.idea/workspace.xml.tmpl",
- "templates/module/common/.metadata.tmpl",
- "templates/module/common/analysis_options.yaml.tmpl",
- "templates/module/common/lib/main.dart.tmpl",
- "templates/module/common/projectName.iml.tmpl",
- "templates/module/common/projectName_android.iml.tmpl",
- "templates/module/common/pubspec.yaml.tmpl",
- "templates/module/common/README.md.tmpl",
- "templates/module/common/test/widget_test.dart.tmpl",
- "templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig",
- "templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig",
- "templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl",
- "templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m",
- "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl",
- "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
- "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme",
- "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
- "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig",
- "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig",
- "templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl",
- "templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m",
- "templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist",
- "templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl",
- "templates/module/ios/library/Flutter.tmpl/README.md",
- "templates/module/README.md",
+ "templates/package/.gitignore.tmpl",
+ "templates/package/.idea/libraries/Dart_SDK.xml.tmpl",
+ "templates/package/.idea/modules.xml.tmpl",
+ "templates/package/.idea/workspace.xml.tmpl",
+ "templates/package/.metadata.tmpl",
+ "templates/package/analysis_options.yaml.tmpl",
+ "templates/package/CHANGELOG.md.tmpl",
+ "templates/package/lib/projectName.dart.tmpl",
+ "templates/package/LICENSE.tmpl",
+ "templates/package/projectName.iml.tmpl",
+ "templates/package/pubspec.yaml.tmpl",
+ "templates/package/README.md.tmpl",
+ "templates/package/test/projectName_test.dart.tmpl",
- "templates/package/.gitignore.tmpl",
- "templates/package/.idea/libraries/Dart_SDK.xml.tmpl",
- "templates/package/.idea/modules.xml.tmpl",
- "templates/package/.idea/workspace.xml.tmpl",
- "templates/package/.metadata.tmpl",
- "templates/package/analysis_options.yaml.tmpl",
- "templates/package/CHANGELOG.md.tmpl",
- "templates/package/lib/projectName.dart.tmpl",
- "templates/package/LICENSE.tmpl",
- "templates/package/projectName.iml.tmpl",
- "templates/package/pubspec.yaml.tmpl",
- "templates/package/README.md.tmpl",
- "templates/package/test/projectName_test.dart.tmpl",
+ "templates/package_ffi/.gitignore.tmpl",
+ "templates/package_ffi/.metadata.tmpl",
+ "templates/package_ffi/analysis_options.yaml.tmpl",
+ "templates/package_ffi/CHANGELOG.md.tmpl",
+ "templates/package_ffi/ffigen.yaml.tmpl",
+ "templates/package_ffi/hook/build.dart.tmpl",
+ "templates/package_ffi/lib/projectName_bindings_generated.dart.tmpl",
+ "templates/package_ffi/lib/projectName.dart.tmpl",
+ "templates/package_ffi/LICENSE.tmpl",
+ "templates/package_ffi/pubspec.yaml.tmpl",
+ "templates/package_ffi/README.md.tmpl",
+ "templates/package_ffi/src.tmpl/projectName.c.tmpl",
+ "templates/package_ffi/src.tmpl/projectName.h.tmpl",
+ "templates/package_ffi/test/projectName_test.dart.tmpl",
- "templates/package_ffi/.gitignore.tmpl",
- "templates/package_ffi/.metadata.tmpl",
- "templates/package_ffi/analysis_options.yaml.tmpl",
- "templates/package_ffi/CHANGELOG.md.tmpl",
- "templates/package_ffi/ffigen.yaml.tmpl",
- "templates/package_ffi/hook/build.dart.tmpl",
- "templates/package_ffi/lib/projectName_bindings_generated.dart.tmpl",
- "templates/package_ffi/lib/projectName.dart.tmpl",
- "templates/package_ffi/LICENSE.tmpl",
- "templates/package_ffi/pubspec.yaml.tmpl",
- "templates/package_ffi/README.md.tmpl",
- "templates/package_ffi/src.tmpl/projectName.c.tmpl",
- "templates/package_ffi/src.tmpl/projectName.h.tmpl",
- "templates/package_ffi/test/projectName_test.dart.tmpl",
+ "templates/plugin/android-java.tmpl/build.gradle.tmpl",
+ "templates/plugin/android-java.tmpl/projectName_android.iml.tmpl",
+ "templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl",
+ "templates/plugin/android-java.tmpl/src/test/java/androidIdentifier/pluginClassTest.java.tmpl",
+ "templates/plugin/android-kotlin.tmpl/build.gradle.tmpl",
+ "templates/plugin/android-kotlin.tmpl/projectName_android.iml.tmpl",
+ "templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl",
+ "templates/plugin/android-kotlin.tmpl/src/test/kotlin/androidIdentifier/pluginClassTest.kt.tmpl",
+ "templates/plugin/android.tmpl/.gitignore",
+ "templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties",
+ "templates/plugin/android.tmpl/gradle.properties.tmpl",
+ "templates/plugin/android.tmpl/settings.gradle.tmpl",
+ "templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl",
+ "templates/plugin/ios-objc.tmpl/projectName.podspec.tmpl",
+ "templates/plugin/ios-swift.tmpl/projectName.podspec.tmpl",
+ "templates/plugin/ios.tmpl/.gitignore",
+ "templates/plugin/lib/projectName.dart.tmpl",
+ "templates/plugin/lib/projectName_platform_interface.dart.tmpl",
+ "templates/plugin/lib/projectName_method_channel.dart.tmpl",
+ "templates/plugin/linux.tmpl/CMakeLists.txt.tmpl",
+ "templates/plugin/linux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl",
+ "templates/plugin/linux.tmpl/pluginClassSnakeCase.cc.tmpl",
+ "templates/plugin/linux.tmpl/pluginClassSnakeCase_private.h.tmpl",
+ "templates/plugin/linux.tmpl/test/pluginClassSnakeCase_test.cc.tmpl",
+ "templates/plugin/README.md.tmpl",
+ "templates/plugin/test/projectName_test.dart.tmpl",
+ "templates/plugin/test/projectName_method_channel_test.dart.tmpl",
+ "templates/plugin/windows.tmpl/CMakeLists.txt.tmpl",
+ "templates/plugin/windows.tmpl/include/projectName.tmpl/pluginClassSnakeCase_c_api.h.tmpl",
+ "templates/plugin/windows.tmpl/test/pluginClassSnakeCase_test.cpp.tmpl",
+ "templates/plugin/windows.tmpl/pluginClassSnakeCase.cpp.tmpl",
+ "templates/plugin/windows.tmpl/pluginClassSnakeCase.h.tmpl",
+ "templates/plugin/windows.tmpl/pluginClassSnakeCase_c_api.cpp.tmpl",
+ "templates/plugin/lib/projectName_web.dart.tmpl",
- "templates/plugin/android-java.tmpl/build.gradle.tmpl",
- "templates/plugin/android-java.tmpl/projectName_android.iml.tmpl",
- "templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl",
- "templates/plugin/android-java.tmpl/src/test/java/androidIdentifier/pluginClassTest.java.tmpl",
- "templates/plugin/android-kotlin.tmpl/build.gradle.tmpl",
- "templates/plugin/android-kotlin.tmpl/projectName_android.iml.tmpl",
- "templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl",
- "templates/plugin/android-kotlin.tmpl/src/test/kotlin/androidIdentifier/pluginClassTest.kt.tmpl",
- "templates/plugin/android.tmpl/.gitignore",
- "templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties",
- "templates/plugin/android.tmpl/gradle.properties.tmpl",
- "templates/plugin/android.tmpl/settings.gradle.tmpl",
- "templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl",
- "templates/plugin/ios-objc.tmpl/projectName.podspec.tmpl",
- "templates/plugin/ios-swift.tmpl/projectName.podspec.tmpl",
- "templates/plugin/ios.tmpl/.gitignore",
- "templates/plugin/lib/projectName.dart.tmpl",
- "templates/plugin/lib/projectName_platform_interface.dart.tmpl",
- "templates/plugin/lib/projectName_method_channel.dart.tmpl",
- "templates/plugin/linux.tmpl/CMakeLists.txt.tmpl",
- "templates/plugin/linux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl",
- "templates/plugin/linux.tmpl/pluginClassSnakeCase.cc.tmpl",
- "templates/plugin/linux.tmpl/pluginClassSnakeCase_private.h.tmpl",
- "templates/plugin/linux.tmpl/test/pluginClassSnakeCase_test.cc.tmpl",
- "templates/plugin/README.md.tmpl",
- "templates/plugin/test/projectName_test.dart.tmpl",
- "templates/plugin/test/projectName_method_channel_test.dart.tmpl",
- "templates/plugin/windows.tmpl/CMakeLists.txt.tmpl",
- "templates/plugin/windows.tmpl/include/projectName.tmpl/pluginClassSnakeCase_c_api.h.tmpl",
- "templates/plugin/windows.tmpl/test/pluginClassSnakeCase_test.cpp.tmpl",
- "templates/plugin/windows.tmpl/pluginClassSnakeCase.cpp.tmpl",
- "templates/plugin/windows.tmpl/pluginClassSnakeCase.h.tmpl",
- "templates/plugin/windows.tmpl/pluginClassSnakeCase_c_api.cpp.tmpl",
- "templates/plugin/lib/projectName_web.dart.tmpl",
+ "templates/plugin_ffi/android.tmpl/build.gradle.tmpl",
+ "templates/plugin_ffi/android.tmpl/projectName_android.iml.tmpl",
+ "templates/plugin_ffi/ffigen.yaml.tmpl",
+ "templates/plugin_ffi/ios.tmpl/.gitignore",
+ "templates/plugin_ffi/ios.tmpl/Classes/projectName.c.tmpl",
+ "templates/plugin_ffi/ios.tmpl/projectName.podspec.tmpl",
+ "templates/plugin_ffi/lib/projectName_bindings_generated.dart.tmpl",
+ "templates/plugin_ffi/lib/projectName.dart.tmpl",
+ "templates/plugin_ffi/linux.tmpl/CMakeLists.txt.tmpl",
+ "templates/plugin_ffi/linux.tmpl/include/projectName.tmpl/plugin_ffiClassSnakeCase.h.tmpl",
+ "templates/plugin_ffi/macos.tmpl/Classes/projectName.c.tmpl",
+ "templates/plugin_ffi/README.md.tmpl",
+ "templates/plugin_ffi/src.tmpl/CMakeLists.txt.tmpl",
+ "templates/plugin_ffi/src.tmpl/projectName.c.tmpl",
+ "templates/plugin_ffi/src.tmpl/projectName.h.tmpl",
+ "templates/plugin_ffi/windows.tmpl/CMakeLists.txt.tmpl",
- "templates/plugin_ffi/android.tmpl/build.gradle.tmpl",
- "templates/plugin_ffi/android.tmpl/projectName_android.iml.tmpl",
- "templates/plugin_ffi/ffigen.yaml.tmpl",
- "templates/plugin_ffi/ios.tmpl/.gitignore",
- "templates/plugin_ffi/ios.tmpl/Classes/projectName.c.tmpl",
- "templates/plugin_ffi/ios.tmpl/projectName.podspec.tmpl",
- "templates/plugin_ffi/lib/projectName_bindings_generated.dart.tmpl",
- "templates/plugin_ffi/lib/projectName.dart.tmpl",
- "templates/plugin_ffi/linux.tmpl/CMakeLists.txt.tmpl",
- "templates/plugin_ffi/linux.tmpl/include/projectName.tmpl/plugin_ffiClassSnakeCase.h.tmpl",
- "templates/plugin_ffi/macos.tmpl/Classes/projectName.c.tmpl",
- "templates/plugin_ffi/README.md.tmpl",
- "templates/plugin_ffi/src.tmpl/CMakeLists.txt.tmpl",
- "templates/plugin_ffi/src.tmpl/projectName.c.tmpl",
- "templates/plugin_ffi/src.tmpl/projectName.h.tmpl",
- "templates/plugin_ffi/windows.tmpl/CMakeLists.txt.tmpl",
+ "templates/plugin_shared/.gitignore.tmpl",
+ "templates/plugin_shared/.idea/libraries/Dart_SDK.xml.tmpl",
+ "templates/plugin_shared/.idea/modules.xml.tmpl",
+ "templates/plugin_shared/.idea/runConfigurations/example_lib_main_dart.xml.tmpl",
+ "templates/plugin_shared/.idea/workspace.xml.tmpl",
+ "templates/plugin_shared/.metadata.tmpl",
+ "templates/plugin_shared/analysis_options.yaml.tmpl",
+ "templates/plugin_shared/android.tmpl/.gitignore",
+ "templates/plugin_shared/android.tmpl/settings.gradle.tmpl",
+ "templates/plugin_shared/android.tmpl/src/main/AndroidManifest.xml.tmpl",
+ "templates/plugin_shared/CHANGELOG.md.tmpl",
+ "templates/plugin_shared/LICENSE.tmpl",
+ "templates/plugin_shared/macos.tmpl/projectName.podspec.tmpl",
+ "templates/plugin_shared/projectName.iml.tmpl",
+ "templates/plugin_shared/pubspec.yaml.tmpl",
+ "templates/plugin_shared/windows.tmpl/.gitignore",
- "templates/plugin_shared/.gitignore.tmpl",
- "templates/plugin_shared/.idea/libraries/Dart_SDK.xml.tmpl",
- "templates/plugin_shared/.idea/modules.xml.tmpl",
- "templates/plugin_shared/.idea/runConfigurations/example_lib_main_dart.xml.tmpl",
- "templates/plugin_shared/.idea/workspace.xml.tmpl",
- "templates/plugin_shared/.metadata.tmpl",
- "templates/plugin_shared/analysis_options.yaml.tmpl",
- "templates/plugin_shared/android.tmpl/.gitignore",
- "templates/plugin_shared/android.tmpl/settings.gradle.tmpl",
- "templates/plugin_shared/android.tmpl/src/main/AndroidManifest.xml.tmpl",
- "templates/plugin_shared/CHANGELOG.md.tmpl",
- "templates/plugin_shared/LICENSE.tmpl",
- "templates/plugin_shared/macos.tmpl/projectName.podspec.tmpl",
- "templates/plugin_shared/projectName.iml.tmpl",
- "templates/plugin_shared/pubspec.yaml.tmpl",
- "templates/plugin_shared/windows.tmpl/.gitignore",
+ "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.h.tmpl",
+ "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.m.tmpl",
+ "templates/plugin_cocoapods/ios-swift.tmpl/Classes/pluginClass.swift.tmpl",
+ "templates/plugin_cocoapods/ios.tmpl/Assets/.gitkeep",
+ "templates/plugin_cocoapods/ios.tmpl/Resources/PrivacyInfo.xcprivacy",
+ "templates/plugin_cocoapods/macos.tmpl/Classes/pluginClass.swift.tmpl",
+ "templates/plugin_cocoapods/macos.tmpl/Resources/PrivacyInfo.xcprivacy",
- "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.h.tmpl",
- "templates/plugin_cocoapods/ios-objc.tmpl/Classes/pluginClass.m.tmpl",
- "templates/plugin_cocoapods/ios-swift.tmpl/Classes/pluginClass.swift.tmpl",
- "templates/plugin_cocoapods/ios.tmpl/Assets/.gitkeep",
- "templates/plugin_cocoapods/ios.tmpl/Resources/PrivacyInfo.xcprivacy",
- "templates/plugin_cocoapods/macos.tmpl/Classes/pluginClass.swift.tmpl",
- "templates/plugin_cocoapods/macos.tmpl/Resources/PrivacyInfo.xcprivacy",
+ "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/include/projectName.tmpl/pluginClass.h.tmpl",
+ "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.m.tmpl",
+ "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Package.swift.tmpl",
+ "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
+ "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Package.swift.tmpl",
+ "templates/plugin_swift_package_manager/ios.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
+ "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/Resources/.gitkeep",
+ "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
+ "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Package.swift.tmpl",
+ "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
- "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/include/projectName.tmpl/pluginClass.h.tmpl",
- "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.m.tmpl",
- "templates/plugin_swift_package_manager/ios-objc.tmpl/projectName.tmpl/Package.swift.tmpl",
- "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
- "templates/plugin_swift_package_manager/ios-swift.tmpl/projectName.tmpl/Package.swift.tmpl",
- "templates/plugin_swift_package_manager/ios.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
- "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/Resources/.gitkeep",
- "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/pluginClass.swift.tmpl",
- "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Package.swift.tmpl",
- "templates/plugin_swift_package_manager/macos.tmpl/projectName.tmpl/Sources/projectName.tmpl/PrivacyInfo.xcprivacy",
+ "templates/widget_preview_scaffold/lib/main.dart.tmpl",
+ "templates/widget_preview_scaffold/pubspec.yaml.tmpl",
+ "templates/widget_preview_scaffold/README.md.tmpl",
- "templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl",
- "templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl",
- "templates/skeleton/assets/images/flutter_logo.png.img.tmpl",
- "templates/skeleton/l10n.yaml.tmpl",
- "templates/skeleton/lib/main.dart.tmpl",
- "templates/skeleton/lib/src/app.dart.tmpl",
- "templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl",
- "templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl",
- "templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl",
- "templates/skeleton/lib/src/localization/app_en.arb.tmpl",
- "templates/skeleton/lib/src/settings/settings_controller.dart.tmpl",
- "templates/skeleton/lib/src/settings/settings_service.dart.tmpl",
- "templates/skeleton/lib/src/settings/settings_view.dart.tmpl",
- "templates/skeleton/pubspec.yaml.tmpl",
- "templates/skeleton/README.md.tmpl",
- "templates/skeleton/test/implementation_test.dart.test.tmpl",
- "templates/skeleton/test/unit_test.dart.tmpl",
- "templates/skeleton/test/widget_test.dart.tmpl",
-
- "templates/widget_preview_scaffold/lib/main.dart.tmpl",
- "templates/widget_preview_scaffold/pubspec.yaml.tmpl",
- "templates/widget_preview_scaffold/README.md.tmpl",
-
- "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
- "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.pbxproj",
- "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
- "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
- "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
- "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme.tmpl"
- ]
+ "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/contents.xcworkspacedata",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.pbxproj",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
+ "templates/xcode/ios/custom_application_bundle/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme.tmpl"
+ ]
}
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
index df4b856..9377f45 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/build_ipa_test.dart
@@ -1868,9 +1868,9 @@
const String projectIconImagePath =
'ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
final String templateIconContentsJsonPath =
- '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
+ '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
const String templateIconImagePath =
- '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
+ '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
fakeProcessManager.addCommands(<FakeCommand>[
xattrCommand,
@@ -1962,9 +1962,9 @@
const String projectIconImagePath =
'ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
final String templateIconContentsJsonPath =
- '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
+ '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json';
const String templateIconImagePath =
- '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
+ '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png';
fakeProcessManager.addCommands(<FakeCommand>[
xattrCommand,
@@ -2484,9 +2484,9 @@
const String projectLaunchImagePath =
'ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
final String templateLaunchImageContentsJsonPath =
- '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
+ '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
const String templateLaunchImagePath =
- '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
+ '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
fakeProcessManager.addCommands(<FakeCommand>[
xattrCommand,
@@ -2576,9 +2576,9 @@
const String projectLaunchImagePath =
'ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
final String templateLaunchImageContentsJsonPath =
- '${Cache.flutterRoot!}/packages/flutter_tools/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
+ '${Cache.flutterRoot!}/packages/flutter_tools/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json';
const String templateLaunchImagePath =
- '/flutter_template_images/templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
+ '/flutter_template_images/templates/app/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png';
fakeProcessManager.addCommands(<FakeCommand>[
xattrCommand,
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
index d13276e..2b575e1 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
@@ -93,7 +93,6 @@
'templates',
'app_integration_test',
),
- globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'app_shared'),
globals.fs.path.join(
'flutter',
'packages',
@@ -102,7 +101,6 @@
'app_test_widget',
),
globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'cocoapods'),
- globals.fs.path.join('flutter', 'packages', 'flutter_tools', 'templates', 'skeleton'),
globals.fs.path.join(
'flutter',
'packages',
@@ -195,9 +193,6 @@
await runner.run(<String>['create', '--no-pub', '--template=app', 'testy1']);
expect((await command.usageValues).commandCreateProjectType, 'app');
- await runner.run(<String>['create', '--no-pub', '--template=skeleton', 'testy2']);
- expect((await command.usageValues).commandCreateProjectType, 'skeleton');
-
await runner.run(<String>['create', '--no-pub', '--template=package', 'testy3']);
expect((await command.usageValues).commandCreateProjectType, 'package');
diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
index 130788e..a01a674 100644
--- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
+++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart
@@ -29,7 +29,7 @@
import 'package:flutter_tools/src/commands/create_base.dart';
import 'package:flutter_tools/src/dart/pub.dart';
import 'package:flutter_tools/src/features.dart';
-import 'package:flutter_tools/src/flutter_project_metadata.dart' show FlutterProjectType;
+import 'package:flutter_tools/src/flutter_project_metadata.dart' show FlutterTemplateType;
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/project.dart';
import 'package:flutter_tools/src/version.dart';
@@ -237,60 +237,6 @@
);
testUsingContext(
- 'can create a skeleton (list/detail) app',
- () async {
- await _createAndAnalyzeProject(
- projectDir,
- <String>['-t', 'skeleton', '-i', 'objc', '-a', 'java', '--implementation-tests'],
- <String>[
- '.dart_tool/flutter_gen/pubspec.yaml',
- '.dart_tool/flutter_gen/gen_l10n/app_localizations.dart',
- 'analysis_options.yaml',
- 'android/app/src/main/java/com/example/flutter_project/MainActivity.java',
- 'android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java',
- 'flutter_project.iml',
- 'ios/Flutter/AppFrameworkInfo.plist',
- 'ios/Runner/AppDelegate.m',
- 'ios/Runner/GeneratedPluginRegistrant.h',
- 'lib/main.dart',
- 'l10n.yaml',
- 'assets/images/2.0x/flutter_logo.png',
- 'assets/images/flutter_logo.png',
- 'assets/images/3.0x/flutter_logo.png',
- 'test/unit_test.dart',
- 'test/widget_test.dart',
- 'test/implementation_test.dart',
- 'lib/src/localization/app_en.arb',
- 'lib/src/app.dart',
- 'lib/src/sample_feature/sample_item_details_view.dart',
- 'lib/src/sample_feature/sample_item_list_view.dart',
- 'lib/src/sample_feature/sample_item.dart',
- 'lib/src/settings/settings_controller.dart',
- 'lib/src/settings/settings_view.dart',
- 'lib/src/settings/settings_service.dart',
- 'lib/main.dart',
- 'pubspec.yaml',
- 'README.md',
- ],
- expectedGitignoreLines: flutterPluginsIgnores,
- );
- return _runFlutterTest(projectDir);
- },
- overrides: <Type, Generator>{
- Pub:
- () => Pub.test(
- fileSystem: globals.fs,
- logger: globals.logger,
- processManager: globals.processManager,
- usage: globals.flutterUsage,
- botDetector: globals.botDetector,
- platform: globals.platform,
- stdio: mockStdio,
- ),
- },
- );
-
- testUsingContext(
'can create a default project if empty directory exists',
() async {
await projectDir.create(recursive: true);
@@ -1559,7 +1505,7 @@
]);
void expectExists(String relPath) {
- expect(globals.fs.isFileSync('${projectDir.path}/$relPath'), true);
+ expect(globals.fs.file('${projectDir.path}/$relPath'), exists);
}
expectExists('lib/main.dart');
@@ -4344,6 +4290,30 @@
});
testUsingContext(
+ 'show an error message for removed --template=skeleton',
+ () async {
+ final CreateCommand command = CreateCommand();
+ final CommandRunner<void> runner = createTestCommandRunner(command);
+ await expectLater(
+ runner.run(<String>['create', '--no-pub', '--template=skeleton', projectDir.path]),
+ throwsToolExit(message: 'The template skeleton is no longer available'),
+ );
+ },
+ overrides: <Type, Generator>{
+ Pub:
+ () => Pub.test(
+ fileSystem: globals.fs,
+ logger: globals.logger,
+ processManager: globals.processManager,
+ usage: globals.flutterUsage,
+ botDetector: globals.botDetector,
+ platform: globals.platform,
+ stdio: mockStdio,
+ ),
+ },
+ );
+
+ testUsingContext(
'create an FFI plugin with ios, then add macos',
() async {
final CreateCommand command = CreateCommand();
@@ -4629,15 +4599,14 @@
() async {
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
- FlutterProjectType.app,
- FlutterProjectType.skeleton,
- FlutterProjectType.module,
+ final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+ FlutterTemplateType.app,
+ FlutterTemplateType.module,
];
- for (final FlutterProjectType projectType in relevantProjectTypes) {
+ for (final FlutterTemplateType projectType in relevantProjectTypes) {
final String relevantAgpVersion =
- projectType == FlutterProjectType.module
+ projectType == FlutterTemplateType.module
? _kIncompatibleAgpVersionForModule
: templateAndroidGradlePluginVersion;
final String expectedMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4657,7 +4626,7 @@
'create',
'--no-pub',
'--template=${projectType.cliName}',
- if (projectType != FlutterProjectType.module) '--platforms=android',
+ if (projectType != FlutterTemplateType.module) '--platforms=android',
projectDir.path,
]);
@@ -4674,7 +4643,7 @@
);
// Check expected file for updating Gradle version is present.
- if (projectType == FlutterProjectType.app || projectType == FlutterProjectType.skeleton) {
+ if (projectType == FlutterTemplateType.app) {
expect(
logger.warningText,
contains(
@@ -4716,17 +4685,16 @@
() async {
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
- FlutterProjectType.app,
- FlutterProjectType.skeleton,
- FlutterProjectType.pluginFfi,
- FlutterProjectType.module,
- FlutterProjectType.plugin,
+ final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+ FlutterTemplateType.app,
+ FlutterTemplateType.pluginFfi,
+ FlutterTemplateType.module,
+ FlutterTemplateType.plugin,
];
- for (final FlutterProjectType projectType in relevantProjectTypes) {
+ for (final FlutterTemplateType projectType in relevantProjectTypes) {
final String relevantAgpVersion =
- projectType == FlutterProjectType.module
+ projectType == FlutterTemplateType.module
? _kIncompatibleAgpVersionForModule
: templateAndroidGradlePluginVersion;
final String expectedMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4746,7 +4714,7 @@
'create',
'--no-pub',
'--template=${projectType.cliName}',
- if (projectType != FlutterProjectType.module) '--platforms=android',
+ if (projectType != FlutterTemplateType.module) '--platforms=android',
projectDir.path,
]);
@@ -4759,14 +4727,13 @@
);
// Check expected file(s) for updating AGP version is/are present.
- if (projectType == FlutterProjectType.app ||
- projectType == FlutterProjectType.skeleton ||
- projectType == FlutterProjectType.pluginFfi) {
+ if (projectType == FlutterTemplateType.app ||
+ projectType == FlutterTemplateType.pluginFfi) {
expect(
logger.warningText,
contains(globals.fs.path.join(projectDir.path, 'android/build.gradle')),
);
- } else if (projectType == FlutterProjectType.plugin) {
+ } else if (projectType == FlutterTemplateType.plugin) {
expect(
logger.warningText,
contains(globals.fs.path.join(projectDir.path, 'android/app/build.gradle')),
@@ -4808,17 +4775,16 @@
() async {
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
- FlutterProjectType.app,
- FlutterProjectType.skeleton,
- FlutterProjectType.pluginFfi,
- FlutterProjectType.module,
- FlutterProjectType.plugin,
+ final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+ FlutterTemplateType.app,
+ FlutterTemplateType.pluginFfi,
+ FlutterTemplateType.module,
+ FlutterTemplateType.plugin,
];
- for (final FlutterProjectType projectType in relevantProjectTypes) {
+ for (final FlutterTemplateType projectType in relevantProjectTypes) {
final String relevantAgpVersion =
- projectType == FlutterProjectType.module
+ projectType == FlutterTemplateType.module
? _kIncompatibleAgpVersionForModule
: templateAndroidGradlePluginVersion;
final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4839,7 +4805,7 @@
'create',
'--no-pub',
'--template=${projectType.cliName}',
- if (projectType != FlutterProjectType.module) '--platforms=android',
+ if (projectType != FlutterTemplateType.module) '--platforms=android',
projectDir.path,
]);
@@ -4866,17 +4832,16 @@
() async {
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
- FlutterProjectType.app,
- FlutterProjectType.skeleton,
- FlutterProjectType.pluginFfi,
- FlutterProjectType.module,
- FlutterProjectType.plugin,
+ final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+ FlutterTemplateType.app,
+ FlutterTemplateType.pluginFfi,
+ FlutterTemplateType.module,
+ FlutterTemplateType.plugin,
];
- for (final FlutterProjectType projectType in relevantProjectTypes) {
+ for (final FlutterTemplateType projectType in relevantProjectTypes) {
final String relevantAgpVersion =
- projectType == FlutterProjectType.module
+ projectType == FlutterTemplateType.module
? _kIncompatibleAgpVersionForModule
: templateAndroidGradlePluginVersion;
final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4897,7 +4862,7 @@
'create',
'--no-pub',
'--template=${projectType.cliName}',
- if (projectType != FlutterProjectType.module) '--platforms=android',
+ if (projectType != FlutterTemplateType.module) '--platforms=android',
projectDir.path,
]);
@@ -4924,17 +4889,16 @@
() async {
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
- final List<FlutterProjectType> relevantProjectTypes = <FlutterProjectType>[
- FlutterProjectType.app,
- FlutterProjectType.skeleton,
- FlutterProjectType.pluginFfi,
- FlutterProjectType.module,
- FlutterProjectType.plugin,
+ final List<FlutterTemplateType> relevantProjectTypes = <FlutterTemplateType>[
+ FlutterTemplateType.app,
+ FlutterTemplateType.pluginFfi,
+ FlutterTemplateType.module,
+ FlutterTemplateType.plugin,
];
- for (final FlutterProjectType projectType in relevantProjectTypes) {
+ for (final FlutterTemplateType projectType in relevantProjectTypes) {
final String relevantAgpVersion =
- projectType == FlutterProjectType.module
+ projectType == FlutterTemplateType.module
? _kIncompatibleAgpVersionForModule
: templateAndroidGradlePluginVersion;
final String unexpectedIncompatibleAgpMessage = getIncompatibleJavaGradleAgpMessageHeader(
@@ -4955,7 +4919,7 @@
'create',
'--no-pub',
'--template=${projectType.cliName}',
- if (projectType != FlutterProjectType.module) '--platforms=android',
+ if (projectType != FlutterTemplateType.module) '--platforms=android',
projectDir.path,
]);
diff --git a/packages/flutter_tools/test/general.shard/application_package_test.dart b/packages/flutter_tools/test/general.shard/application_package_test.dart
index 5642396..f8d8459 100644
--- a/packages/flutter_tools/test/general.shard/application_package_test.dart
+++ b/packages/flutter_tools/test/general.shard/application_package_test.dart
@@ -560,7 +560,7 @@
'packages',
'flutter_tools',
'templates',
- 'app_shared',
+ 'app',
'ios.tmpl',
iconDirSuffix,
),
@@ -604,7 +604,7 @@
globals.fs.path.absolute(
'flutter_template_images',
'templates',
- 'app_shared',
+ 'app',
'ios.tmpl',
iconDirSuffix,
),
@@ -643,7 +643,7 @@
'packages',
'flutter_tools',
'templates',
- 'app_shared',
+ 'app',
'ios.tmpl',
launchImageDirSuffix,
),
@@ -687,7 +687,7 @@
globals.fs.path.absolute(
'flutter_template_images',
'templates',
- 'app_shared',
+ 'app',
'ios.tmpl',
launchImageDirSuffix,
),
diff --git a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
index e8e4699..5c50f79 100644
--- a/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
+++ b/packages/flutter_tools/test/general.shard/flutter_project_metadata_test.dart
@@ -61,7 +61,7 @@
project_type: plugin
''');
final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
- expect(projectMetadata.projectType, FlutterProjectType.plugin);
+ expect(projectMetadata.projectType, FlutterTemplateType.plugin);
expect(projectMetadata.versionChannel, isNull);
expect(projectMetadata.versionRevision, isNull);
@@ -79,7 +79,7 @@
project_type: plugin
''');
final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
- expect(projectMetadata.projectType, FlutterProjectType.plugin);
+ expect(projectMetadata.projectType, FlutterTemplateType.plugin);
expect(projectMetadata.versionChannel, isNull);
expect(projectMetadata.versionRevision, isNull);
@@ -169,7 +169,7 @@
unmanaged_files: {}
''');
final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
- expect(projectMetadata.projectType, FlutterProjectType.app);
+ expect(projectMetadata.projectType, FlutterTemplateType.app);
expect(
projectMetadata.migrateConfig.platformConfigs[SupportedPlatform.root]?.createRevision,
'abcdefg',
@@ -213,7 +213,7 @@
- 'file1'
''');
final FlutterProjectMetadata projectMetadata = FlutterProjectMetadata(metadataFile, logger);
- expect(projectMetadata.projectType, FlutterProjectType.app);
+ expect(projectMetadata.projectType, FlutterTemplateType.app);
expect(
projectMetadata.migrateConfig.platformConfigs[SupportedPlatform.root]?.createRevision,
'abcdefg',
@@ -240,15 +240,27 @@
});
testUsingContext('enabledValues does not contain packageFfi if native-assets not enabled', () {
- expect(FlutterProjectType.enabledValues, isNot(contains(FlutterProjectType.packageFfi)));
- expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.plugin));
+ expect(
+ ParsedFlutterTemplateType.enabledValues(featureFlags),
+ isNot(contains(FlutterTemplateType.packageFfi)),
+ );
+ expect(
+ ParsedFlutterTemplateType.enabledValues(featureFlags),
+ contains(FlutterTemplateType.plugin),
+ );
});
testUsingContext(
'enabledValues contains packageFfi if natives-assets enabled',
() {
- expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.packageFfi));
- expect(FlutterProjectType.enabledValues, contains(FlutterProjectType.plugin));
+ expect(
+ ParsedFlutterTemplateType.enabledValues(featureFlags),
+ contains(FlutterTemplateType.packageFfi),
+ );
+ expect(
+ ParsedFlutterTemplateType.enabledValues(featureFlags),
+ contains(FlutterTemplateType.plugin),
+ );
},
overrides: <Type, Generator>{FeatureFlags: () => TestFeatureFlags(isNativeAssetsEnabled: true)},
);
diff --git a/packages/flutter_tools/test/general.shard/template_test.dart b/packages/flutter_tools/test/general.shard/template_test.dart
index ec21166..2f25e7e 100644
--- a/packages/flutter_tools/test/general.shard/template_test.dart
+++ b/packages/flutter_tools/test/general.shard/template_test.dart
@@ -115,12 +115,8 @@
}
''');
expect(
- (await templatePathProvider.imageDirectory(
- 'app_shared',
- globals.fs,
- globals.logger,
- )).path,
- globals.fs.path.absolute('flutter_template_images', 'templates', 'app_shared'),
+ (await templatePathProvider.imageDirectory('app', globals.fs, globals.logger)).path,
+ globals.fs.path.absolute('flutter_template_images', 'templates', 'app'),
);
},
overrides: overrides,
diff --git a/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart b/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
index ee3e9b2..fc53190 100644
--- a/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
+++ b/packages/flutter_tools/test/integration.shard/analyze_all_templates_test.dart
@@ -13,14 +13,7 @@
void main() {
group('pass analyze template:', () {
- final List<String> templates = <String>[
- 'app',
- 'module',
- 'package',
- 'plugin',
- 'plugin_ffi',
- 'skeleton',
- ];
+ final List<String> templates = <String>['app', 'module', 'package', 'plugin', 'plugin_ffi'];
late Directory tempDir;
setUp(() {