initProject function
Future<void>
initProject(
{ - required String projectName,
- required bool riverpod,
- required bool bloc,
- required bool getx,
- bool useGoRouter = true,
- bool useTheme = true,
})
Implementation
Future<void> initProject({
required String projectName,
required bool riverpod,
required bool bloc,
required bool getx,
bool useGoRouter = true,
bool useTheme = true,
}) async {
await createFlutterProject(projectName);
createFolders(projectName);
createMainFile(
projectName: projectName,
riverpod: riverpod,
bloc: bloc,
getx: getx,
);
if (useGoRouter) {
createRouterFile(projectName);
createRoutesFile(projectName);
}
if (useTheme) {
createThemeFile(projectName);
}
// Config save karo
final stateManagement = riverpod
? 'Riverpod'
: bloc
? 'Bloc'
: getx
? 'GetX'
: 'Provider';
ConfigService.saveConfig(
projectName: projectName,
stateManagement: stateManagement,
);
// Dependencies
final packages = <String>[];
if (useGoRouter) packages.add('go_router');
if (riverpod) {
print('š¦ Adding Riverpod + Dio...');
packages.addAll(['flutter_riverpod', 'dio']);
await _addPackages(projectName, packages);
print('š„ Riverpod architecture ready');
} else if (bloc) {
print('š¦ Adding Bloc + Dio...');
packages.addAll(['flutter_bloc', 'equatable', 'dio']);
await _addPackages(projectName, packages);
print('š„ Bloc architecture ready');
} else if (getx) {
print('š¦ Adding GetX + Dio...');
packages.addAll(['get', 'dio']);
await _addPackages(projectName, packages);
print('š„ GetX architecture ready');
} else {
print('š¦ Adding Provider + Dio...');
packages.addAll(['provider', 'dio']);
await _addPackages(projectName, packages);
print('š„ Provider architecture ready');
}
print('\nā
Project "$projectName" created successfully!');
print('š cd $projectName && flutter run');
}