Skip to content

Commit

Permalink
#1 fixed formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
vanlooverenkoen committed Sep 19, 2019
1 parent cf86e07 commit 8cb0a2a
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 29 deletions.
12 changes: 8 additions & 4 deletions bin/icapps_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ Params params;
Future<void> main(List<String> 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.');
Expand Down Expand Up @@ -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);
Expand Down
82 changes: 57 additions & 25 deletions bin/src/file_creator_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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<void> init(${CaseUtil.getCamelcase(screenName)}Navigator navigator) async {')
..writeln(
' Future<void> 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<void> updateInjector(String projectName, String screenName) async {
static Future<void> 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<void> updateMainNavigator(String projectName, String screenName) async {
final mainNavigatorFile = File(join('lib', 'navigator', 'main_navigator.dart'));
static Future<void> 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(() {});
Expand Down

0 comments on commit 8cb0a2a

Please sign in to comment.