in lib/src/project_creator.dart [69:125]
Future<void> buildFlutterProjectTemplate({
required FirebaseStyle firebaseStyle,
required bool devMode,
}) async {
final projectDirName = firebaseStyle == FirebaseStyle.none
? 'flutter_project'
: 'firebase_project';
final projectPath = path.join(
_templatesPath,
projectDirName,
);
final projectDir = await Directory(projectPath).create(recursive: true);
await Directory(path.join(projectPath, 'lib')).create();
await Directory(path.join(projectPath, 'web')).create();
await File(path.join(projectPath, 'web', 'index.html')).create();
var packages = {
...supportedBasicDartPackages,
...supportedFlutterPackages(devMode: devMode),
if (firebaseStyle != FirebaseStyle.none) ...coreFirebasePackages,
if (firebaseStyle == FirebaseStyle.flutterFire)
...registerableFirebasePackages,
};
final dependencies = _dependencyVersions(packages);
File(path.join(projectPath, 'pubspec.yaml'))
.writeAsStringSync(createPubspec(
includeFlutterWeb: true,
dartLanguageVersion: _dartLanguageVersion,
dependencies: dependencies,
));
await runFlutterPackagesGet(_flutterToolPath, projectPath, log: _log);
if (firebaseStyle != FirebaseStyle.none) {
// `flutter packages get` has been run with a _subset_ of all supported
// Firebase packages, the ones that don't require a Firebase app to be
// configured in JavaScript, before executing Dart. Now add the full set of
// supported Firebase pacakges. This workaround is a very fragile hack.
packages = {
...supportedBasicDartPackages,
...supportedFlutterPackages(devMode: devMode),
...firebasePackages,
};
final dependencies = _dependencyVersions(packages);
File(path.join(projectPath, 'pubspec.yaml'))
.writeAsStringSync(createPubspec(
includeFlutterWeb: true,
dartLanguageVersion: _dartLanguageVersion,
dependencies: dependencies,
));
await _runDartPubGet(projectDir);
}
File(path.join(projectPath, 'analysis_options.yaml')).writeAsStringSync('''
include: package:flutter_lints/flutter.yaml
linter:
rules:
avoid_print: false
use_key_in_widget_constructors: false
''');
}