Folder by Easy CLI Utility :open_file_folder:
A Dart CLI tool that generates the folder structure for the folder-by-feature pattern. This tool helps to reduce the repetitive work required to setup directories for models, services, repositories, screens and widgets.
Required flutter packages
Get, Get Storage, Dio, Intl Phone Field Logger flutter_screenutil
The folder structure generated by the cli is as follows:
core/
┣ constants/
┃ ┣ app_icon.dart
┃ ┣ app_icon.svg.dart
┃ ┗ app_regex.dart
┣ init/
┃ ┣ service/
┃ ┃ ┣ base_service.dart
┃ ┃ ┗ dio_service.dart
┃ ┣ view
┃ ┃ ┣ base
┃ ┃ ┃ ┣ base_state.dart
┃ ┃ ┃ ┗ base_stateless.dart
┃ ┃ ┣ theme
┃ ┃ ┃ ┗ theme.dart
┃ ┃ ┣ widget
┃ ┃ ┃ ┣ button
┃ ┃ ┃ ┣ card
┃ ┃ ┃ ┣ checkbox
┃ ┃ ┃ ┣ form
┃ ┃ ┃ ┣ slider
┃ ┃ ┃ ┣ textformfield
┃ ┣ viewmodel
┃ ┃ ┗ base_viewmodel.dart
┣ manager/
┃ ┣ auth/
┣ ┣ auth_manager.dart
┃ ┃
┃ ┣ cache/
┣ ┗ cache_manager.dart
┣ extension/
┃ ┗ base_extension.dart
┣ language/
┃ ┗ base_language.dart
┣ model/
┗ ┗ base_model.dart
feature/
┣ components/
┃ ┗ button
product/
┣ model/
┃ ┗ product_model.dart
┣ service/
┃ ┗ product_service.dart
┣ view/
┣ ┣ product_state_view.dart
┣ ┗ product_stateless_view.dart
┣ viewmodel/
┃ ┗ product_viewmodel.dart
Example main.dart
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'core/manager/cache/shared_pref.dart';
import 'app/routes/app_pages.dart';
import 'config/theme/my_theme.dart';
import 'config/translations/localization_service.dart';
Future<void> main() async {
// wait for bindings
WidgetsFlutterBinding.ensureInitialized();
// init shared preference
await MySharedPref.init();
runApp(
ScreenUtilInit(
// xd art board size
designSize: const Size(375, 812),
minTextAdapt: true,
splitScreenMode: true,
builder: (context, widget) {
return GetMaterialApp(
title: "GetXSkeleton",
useInheritedMediaQuery: true,
debugShowCheckedModeBanner: false,
builder: (context,widget) {
bool themeIsLight = MySharedPref.getThemeIsLight();
return Theme(
data: MyTheme.getThemeData(isLight: themeIsLight),
child: MediaQuery(
// prevent font from scalling (some people use big/small device fonts)
// but we want our app font to still the same and dont get affected
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: widget!,
),
);
},
initialRoute: AppPages.INITIAL, // first screen to show when app is running
getPages: AppPages.routes, // app screens
locale: MySharedPref.getCurrentLocal(), // app language
translations: LocalizationService(), // localization services in app (controller app language)
);
},
),
);
}
Command Usage :wrench:
Make sure you are in the root of your project
easy generate -n <project_name>
:copyright: 2022 Eren KARA
Libraries
- samples/implementations/core/constants/enum/api_call_status_enum
- samples/implementations/core/init/view/widget/card/app_card
- samples/implementations/core/init/view/widget/checkbox/app_checkbox
- samples/implementations/core/init/view/theme/app_fonts
- samples/implementations/core/init/view/widget/form/app_form
- samples/implementations/core/constants/app_icon
- samples/implementations/core/constants/app_icon.svg
- samples/implementations/core/config/app_localization_service
- samples/implementations/core/constants/app_regex
- samples/implementations/core/init/view/widget/slider/app_slider
- samples/implementations/core/init/view/widget/sncakbar/app_snackbar
- samples/implementations/core/config/app_strings
- samples/implementations/core/init/view/theme/app_style
- samples/implementations/core/init/view/widget/textformfield/app_textformfield
- samples/implementations/core/init/view/widget/animator/app_widget_animator
- samples/implementations/core/manager/auth/auth_manager
- samples/implementations/core/init/service/base_service
- samples/implementations/core/init/view/base/base_state
- samples/implementations/core/init/view/base/base_stateless
- samples/implementations/core/init/viewmodel/base_viewmodel
- samples/implementations/core/manager/cache/cache_manager
- samples/implementations/core/init/view/theme/dark_theme_color
- samples/implementations/core/init/service/dio_service
- utils/directory
- easy_cli
- samples/implementations/core/config/en_US/en_us_translation
- samples/implementations/core/extension
- utils/files
- commands/generate
- samples/implementations/core/language
- samples/implementations/core/init/view/theme/light_theme_color
- samples/implementations/core/logger
- utils/logs
- samples/implementations/core/model
- samples/implementations/product/model/product_model
- samples/implementations/product/service/product_service
- samples/implementations/product/view/product_state_view
- samples/implementations/product/view/product_stateless_view
- samples/implementations/product/viewmodel/product_viewmodel
- samples/sample
- samples/implementations/core/init/view/theme/theme
- samples/implementations/core/config/tr_TR/tr_tr_translation