diff --git a/bin/icapps_generator.dart b/bin/icapps_generator.dart index e53af36..da35b47 100644 --- a/bin/icapps_generator.dart +++ b/bin/icapps_generator.dart @@ -12,7 +12,8 @@ Params params; Future main(List args) async { final pubspecYaml = File(join(Directory.current.path, 'pubspec.yaml')); if (!pubspecYaml.existsSync()) { - throw Exception('This program should be run from the root of a flutter/dart project'); + throw Exception( + 'This program should be run from the root of a flutter/dart project'); } if (args == null || args.isEmpty) { throw Exception('No arguments provided. 1 argument is required.'); @@ -60,14 +61,17 @@ void createFolders() { } void createFiles() { - final screenFile = File(join('lib', 'screen', screenName, '${screenName}_screen.dart')); - final viewModelFile = File(join('lib', 'viewmodel', screenName, '${screenName}_viewmodel.dart')); + final screenFile = + File(join('lib', 'screen', screenName, '${screenName}_screen.dart')); + final viewModelFile = File( + join('lib', 'viewmodel', screenName, '${screenName}_viewmodel.dart')); if (screenFile.existsSync()) { throw Exception('`lib/screen/${screenName}_screen.dart` already exists'); } if (viewModelFile.existsSync()) { - throw Exception('`lib/viewmodel/${screenName}_viewmodel.dart` already exists'); + throw Exception( + '`lib/viewmodel/${screenName}_viewmodel.dart` already exists'); } print('Create `lib/screen/${screenName}_screen.dart`'); screenFile.createSync(recursive: true); diff --git a/bin/src/file_creator_helper.dart b/bin/src/file_creator_helper.dart index bca2aa5..55e4aa6 100644 --- a/bin/src/file_creator_helper.dart +++ b/bin/src/file_creator_helper.dart @@ -12,86 +12,118 @@ class FileCreatorHelper { final sb = StringBuffer() ..writeln("import 'package:flutter/material.dart';") ..writeln() - ..writeln('class ${CaseUtil.getCamelcase(screenName)}ViewModel with ChangeNotifier{') + ..writeln( + 'class ${CaseUtil.getCamelcase(screenName)}ViewModel with ChangeNotifier{') ..writeln(' ${CaseUtil.getCamelcase(screenName)}Navigator _navigator;') ..writeln() - ..writeln(' Future init(${CaseUtil.getCamelcase(screenName)}Navigator navigator) async {') + ..writeln( + ' Future init(${CaseUtil.getCamelcase(screenName)}Navigator navigator) async {') ..writeln(' _navigator = navigator;') ..writeln(' }') ..writeln('}') ..writeln() - ..writeln('abstract class ${CaseUtil.getCamelcase(screenName)}Navigator {}'); + ..writeln( + 'abstract class ${CaseUtil.getCamelcase(screenName)}Navigator {}'); // Write to file - File(join('lib', 'viewmodel', screenName, '${screenName}_viewmodel.dart')).writeAsStringSync(sb.toString()); + File(join('lib', 'viewmodel', screenName, '${screenName}_viewmodel.dart')) + .writeAsStringSync(sb.toString()); } static void createScreenFile(String projectName, String screenName) { final sb = StringBuffer() - ..writeln("import 'package:$projectName/viewmodel/$screenName/${screenName}_viewmodel.dart';") + ..writeln( + "import 'package:$projectName/viewmodel/$screenName/${screenName}_viewmodel.dart';") ..writeln("import 'package:flutter/material.dart';") ..writeln("import 'package:kiwi/kiwi.dart' as kiwi;") ..writeln("import 'package:provider/provider.dart';") ..writeln() - ..writeln('class ${CaseUtil.getCamelcase(screenName)}Screen extends StatelessWidget implements ${CaseUtil.getCamelcase(screenName)}Navigator {') + ..writeln( + 'class ${CaseUtil.getCamelcase(screenName)}Screen extends StatelessWidget implements ${CaseUtil.getCamelcase(screenName)}Navigator {') ..writeln(" static const String routeName = '$screenName';") ..writeln() ..writeln(' @override') ..writeln(' Widget build(BuildContext context) {') - ..writeln(' return ChangeNotifierProvider<${CaseUtil.getCamelcase(screenName)}ViewModel>(') - ..writeln(' child: Consumer<${CaseUtil.getCamelcase(screenName)}ViewModel>(') + ..writeln( + ' return ChangeNotifierProvider<${CaseUtil.getCamelcase(screenName)}ViewModel>(') + ..writeln( + ' child: Consumer<${CaseUtil.getCamelcase(screenName)}ViewModel>(') ..writeln(' builder: (context, value, child) => Scaffold(') ..writeln(' body: Center(),') ..writeln(' ),') ..writeln(' ),') - ..writeln(' builder: (context) => kiwi.Container().resolve()..init(this),') + ..writeln( + ' builder: (context) => kiwi.Container().resolve()..init(this),') ..writeln(' );') ..writeln(' }') ..writeln('}'); // Write to file - File(join('lib', 'screen', screenName, '${screenName}_screen.dart')).writeAsStringSync(sb.toString()); + File(join('lib', 'screen', screenName, '${screenName}_screen.dart')) + .writeAsStringSync(sb.toString()); } - static Future updateInjector(String projectName, String screenName) async { + static Future updateInjector( + String projectName, String screenName) async { final injectorFile = File(join('lib', 'di', 'injector.dart')); - final sb = StringBuffer()..writeln("import 'package:$projectName/viewmodel/$screenName/${screenName}_viewmodel.dart';"); - await injectorFile.openRead().transform(const Utf8Decoder()).transform(const LineSplitter()).forEach((l) { + final sb = StringBuffer() + ..writeln( + "import 'package:$projectName/viewmodel/$screenName/${screenName}_viewmodel.dart';"); + await injectorFile + .openRead() + .transform(const Utf8Decoder()) + .transform(const LineSplitter()) + .forEach((l) { if (l == ' void registerViewModelFactories();') { - sb.writeln(' @Register.factory(${CaseUtil.getCamelcase(screenName)}ViewModel)'); + sb.writeln( + ' @Register.factory(${CaseUtil.getCamelcase(screenName)}ViewModel)'); } sb.writeln(l); }).whenComplete(() {}); injectorFile.writeAsStringSync(sb.toString()); } - static Future updateMainNavigator(String projectName, String screenName) async { - final mainNavigatorFile = File(join('lib', 'navigator', 'main_navigator.dart')); + static Future updateMainNavigator( + String projectName, String screenName) async { + final mainNavigatorFile = + File(join('lib', 'navigator', 'main_navigator.dart')); if (!mainNavigatorFile.existsSync()) { - print('`lib/navigator/main_navigator.dart` does not exists. Can not add navigation logic.'); + print( + '`lib/navigator/main_navigator.dart` does not exists. Can not add navigation logic.'); return; } final sb = StringBuffer() - ..writeln("import 'package:$projectName/screen/$screenName/${screenName}_screen.dart';") - ..writeln("import 'package:$projectName/widgets/general/flavor_banner.dart';"); + ..writeln( + "import 'package:$projectName/screen/$screenName/${screenName}_screen.dart';") + ..writeln( + "import 'package:$projectName/widgets/general/flavor_banner.dart';"); var writeOnGenerateRoute = false; - await mainNavigatorFile.openRead().transform(const Utf8Decoder()).transform(const LineSplitter()).forEach((l) { + await mainNavigatorFile + .openRead() + .transform(const Utf8Decoder()) + .transform(const LineSplitter()) + .forEach((l) { if (l == ' Route onGenerateRoute(RouteSettings settings) {') { writeOnGenerateRoute = true; } if (l == ' default:' && writeOnGenerateRoute) { sb - ..writeln(' case ${CaseUtil.getCamelcase(screenName)}Screen.routeName:') - ..writeln(' return MaterialPageRoute(builder: (context) => FlavorBanner(child: ${CaseUtil.getCamelcase(screenName)}Screen()), settings: settings);'); + ..writeln( + ' case ${CaseUtil.getCamelcase(screenName)}Screen.routeName:') + ..writeln( + ' return MaterialPageRoute(builder: (context) => FlavorBanner(child: ${CaseUtil.getCamelcase(screenName)}Screen()), settings: settings);'); } - if (l == ' void closeDialog() => Navigator.of(context, rootNavigator: true).pop();') { + if (l == + ' void closeDialog() => Navigator.of(context, rootNavigator: true).pop();') { sb - ..writeln(' void goTo${CaseUtil.getCamelcase(screenName)}() => navigationKey.currentState.pushReplacementNamed(${CaseUtil.getCamelcase(screenName)}Screen.routeName);') + ..writeln( + ' void goTo${CaseUtil.getCamelcase(screenName)}() => navigationKey.currentState.pushReplacementNamed(${CaseUtil.getCamelcase(screenName)}Screen.routeName);') ..writeln(); } - if (l != "import 'package:$projectName/widgets/general/flavor_banner.dart';") { + if (l != + "import 'package:$projectName/widgets/general/flavor_banner.dart';") { sb.writeln(l); } }).whenComplete(() {});