Future buildFlutterProjectTemplate()

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
''');
  }