execute method

  1. @override
Future<void> execute()
override

Implementation

@override
Future<void> execute() async {
  await Future.wait([
    createDirectory(path: Constants.coreDirectoryPath.actualPath()),
    createDirectory(path: Constants.screensDirectoryPath.actualPath()),
    createDirectory(path: Constants.widgetsDirectoryPath.actualPath()),
    createDirectory(path: Constants.utilsDirectoryPath.actualPath()),
    createDirectory(path: Constants.constantsDirectoryPath.actualPath()),
    createDirectory(path: Constants.providerDirectoryPath.actualPath()),
    createDirectory(path: Constants.themeDirectoryPath.actualPath()),
    createDirectory(path: Constants.assetsImageDirectoryPath.actualPath()),
  ]);
  await Future.wait([
    writeFile(
      path: Constants.mainFilePath.actualPath(),
      content: InitGenerator.mainFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.appFilePath.actualPath(),
      content: InitGenerator.appFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.appRoutesPath.actualPath(),
      content: InitGenerator.appRoutesFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.routeNavigatorPath.actualPath(),
      content: InitGenerator.routeNavigatorFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.colorConstantsPath.actualPath(),
      content: InitGenerator.colorConstantsFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.assetImagesPath.actualPath(),
      content: InitGenerator.assetImagesFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.baseScreenPath.actualPath(),
      content: InitGenerator.baseScreenFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.baseDialogPath.actualPath(),
      content: InitGenerator.baseDialogFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.customAppbarPath.actualPath(),
      content: InitGenerator.customAppbarFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.splashScreenPath.actualPath(),
      content: InitGenerator.splashScreenFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.homeScreenPath.actualPath(),
      content: InitGenerator.homeScreenFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.homeScreenRepositoryPath.actualPath(),
      content: InitGenerator.homeScreenRepositoryFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.homeScreenBlocPath.actualPath(),
      content: InitGenerator.homeScreenBlocFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.homeScreenEventPath.actualPath(),
      content: InitGenerator.homeScreenEventFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.homeScreenStatePathBloc.actualPath(),
      content: InitGenerator.homeScreenStateFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.commonUtilsFilePath.actualPath(),
      content: InitGenerator.commonUtilsFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.mediaUtilsFilePath.actualPath(),
      content: InitGenerator.mediaUtilsFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.datePickerUtilsFilePath.actualPath(),
      content: InitGenerator.datePickerUtilsFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.textFieldWidgetPath.actualPath(),
      content: InitGenerator.textfieldWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.checkboxWidgetPath.actualPath(),
      content: InitGenerator.checkboxWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.radioButtonWidgetPath.actualPath(),
      content: InitGenerator.radioButtonWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.networkImageWidgetPath.actualPath(),
      content: InitGenerator.networkImageWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.searchFieldWidgetPath.actualPath(),
      content: InitGenerator.searchFieldWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.emptyViewWidgetPath.actualPath(),
      content: InitGenerator.emptyWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.backArrowWidgetPath.actualPath(),
      content: InitGenerator.backArrowWidgetFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.textStyleFilePath.actualPath(),
      content: InitGenerator.textStyleFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.urlManagerPath.actualPath(),
      content: InitGenerator.urlManagerFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.preferenceProviderPath.actualPath(),
      content: InitGenerator.preferenceProviderFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.enumsPath.actualPath(),
      content: InitGenerator.enumsFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.apiProviderPath.actualPath(),
      content: InitGenerator.apiProviderFileContent.replaceAppName,
    ),
    writeFile(
      path: Constants.themeFilePath.actualPath(),
      content: InitGenerator.themeFileContent.replaceAppName,
    ),
  ]);

  String filePath = Platform.script.toFilePath();
  if (filePath.contains("flutter_bloc_cli")) {
    String directoryPath = filePath.substring(
        0,
        filePath.indexOf(
            "${Platform.pathSeparator}flutter_bloc_cli${Platform.pathSeparator}"));
    String emptyImageFilePath =
        "$directoryPath${Platform.pathSeparator}flutter_bloc_cli${Platform.pathSeparator}assets${Platform.pathSeparator}images${Platform.pathSeparator}empty.png";
    String destinationFilePath =
        "${Directory.current.path}${Constants.assetsEmptyImageFilePath.actualPath()}";

    File emptyImageFile = File(emptyImageFilePath);
    if (emptyImageFile.existsSync()) {
      File destinationFile = File(destinationFilePath);
      await destinationFile.create(recursive: true);
      await emptyImageFile.copy(destinationFile.path);
    }
  }

  print(green("""Generated files:\n
\\lib
- App
  - core
    - constants
      - color_constants.dart
      - url_manager.dart

    - enums
      - enums.dart

    - provider
      - api_provider.dart
      - preference_provider.dart

    - theme
      - theme.dart

    - utils
      - app_text_style.dart
      - asset_images.dart
      - common.dart
      - date_picker_utils.dart
      - media_utils.dart

  - routes
    - app_routes.dart
    - route_navigator.dart

  - screens
    - base_screen
      - view
        - base_dialog.dart
        - base_screen.dart
        - custom_appbar.dart

    - home_screen
      - bloc
        - home_screen_bloc.dart
        - home_screen_event.dart
        - home_screen_state.dart

      - repository
        - home_screen_repository.dart

      - view
        - home_screen.dart

    - splash_screen
      - view
        - splash_screen.dart

  - widgets
   - app_checkbox.dart
   - app_network_image.dart
   - app_radio_button.dart
   - app_textfield.dart
   - back_arrow.dart
   - empty_view.dart
   - search_field.dart

- app.dart
- main.dart
\n\n"""));

  print(green("Adding the required dependencies to your project..."));

  await process.run(
      "flutter pub add bloc flutter_bloc cached_network_image shared_preferences http shimmer intl file_picker",
      verbose: false);

  print(green("√ Bloc Pattern structure successfully generated."));
}