π¦ jbdev (Internal Utility Package)
A collection of extensions, widgets, and helpers to streamline JBDEV app development. Maintained by Jatin Batra β not for public use.
π§ Core Setup
Wrap your app:
App.init();
runApp(Jbdev(
builder: (ctx) => MaterialApp(navigatorKey: navKey, home: HomePage()),
));
Quick config:
App.currencySymbol = "βΉ";
App.locale = JBLocale.en_IN;
App.timezone = JBTimezone.ist;
βοΈ JBConfig Settings
Customize:
- Default button styles
- Popup / BottomSheet UI
- Locale, timezone, symbol
Override widgets:
JBConfig.defCurrencySymbol = 'βΉ';
JBConfig.defLocale = JBLocale.en_IN;
JBConfig.defTimezone = JBTimezone.ist;
JBConfig.loadingPopupWidget = (ctx) => MyCustomLoading();
JBConfig.popupWidget = (ctx, popup) => MyCustomPopup(popup);
JBConfig.bottomSheetWidget = (ctx, popup) => MyBottomSheet(popup);
JBConfig.bottomSheetMaxHeight = 0.8;
JBConfig.bottomSheetBorderRadius = 16;
JBConfig.bottomSheetBackgroundColor = Colors.white;
JBConfig.bottomSheetBarrierBlur = 4;
JBConfig.popupBarrierColor = Colors.black54;
JBConfig.popupBorderRadius = 16;
JBConfig.popupPadding = EdgeInsets.all(26);
JBConfig.popupBarrierBlur = 4;
JBConfig.popupBackgroundColor = Colors.white;
JBConfig.defaultButton = JBButtonProperties(
color: Colors.blue,
textColor: Colors.white,
);
JBConfig.buttons = {
"success": JBButtonProperties(color: Colors.green, textColor: Colors.white),
"error": JBButtonProperties(color: Colors.red, textColor: Colors.white),
"primary:light": JBButtonProperties(color: Colors.blue.shade100, textColor: Colors.black),
// Add more types as needed
};
π² SharedPreferencesManager
save(),get(),remove(),clear()- Supports
String,bool,int,double,List<String>,toJson()objects
π Utilities
Loading
showLoading(ctx); // show
hideLoading(); // hide
Popups
showJBPopup(ctx, popup);
hideJBPopup("id");
hideJBAllPopups();
π² JBButton
Custom-styled button via JBConfig.buttons:
JBButton(
text: "Save",
type: "success",
onPressed: () {},
);
Supports icon, gradient, radius, etc.
π§ Extensions (Quick Access)
BuildContext
screenWidth,isDarkModelaunchAction(JBAction)textThemes,colors
Enum
.fromString("value", fallback: ...)
DateTime
.toJBTimezone(),.toShortDate(),.toRelativeTime(),.age,.isWeekend
Color
HexColor.fromHex("#abc123")color.toHex()
String
.camelCase,.snakeCase,.slugify(),.isEmail,.isPan,.toEnum(...)
num
.money(),.half,.pluralize("apple"),.seconds
Object?
.toNum(),.toBool(),.toDateTime(),.toList(),.isEmptyValue
TextStyle
.sm,.xl,.primary(context),.underline,.ellipsis
Widget
.withPadding(),.centered(),.onTap(),.scrollable(),.withSize()
π Log Utility
Log.e("Error"); // π΄
Log.i("Info"); // π΅
Log.s("Success"); // π’
β Debug only, uses ANSI color in terminal.
π Apis
// Set your base URL and optional API config
JBConfig.baseUrl = "https://yourdomain.com/api/";
JBConfig.apiConfig = ApiConfig();
try {
Api('/endpoint', apiMethod: ApiMethods.get, data: {}).call(ctx).then((response) {
// Handle response
});
} catch (e) {
// Handle error if needed
}
β Best Practices
- Call
App.init()early - Use fallback/defaults for missing styles
- Centralize UI config via
JBConfig - Use extensions for cleaner and faster UI
Libraries
- app
- data/network/api
- data/network/api_methods
- data/network/dio_client
- enums/jb_locale
- enums/jb_timezone
- extensions/color_extensions
- extensions/context_extensions
- extensions/date_time_extensions
- extensions/list_extension
- extensions/num_extension
- extensions/object_extension
- extensions/string_extensions
- extensions/text_style_extension
- extensions/widget_extensions
- helpers/bottom_end_notifier
- helpers/jb_api_exception
- helpers/jb_popup_manager
- helpers/jb_text_controller
- helpers/loading_popup_manager
- helpers/toast_manager
- jbdev
- main
- models/jb_action
- models/jb_popup
- models/jb_text_field_properties
- ui/jb_bottom_sheet/jb_bottom_sheet
- ui/jb_bottom_sheet/jb_modal_barrier
- ui/widget/jb_bottom_sheet_widget
- ui/widget/jb_popup_widget
- ui/widget/jb_text
- ui/widget/jb_text_field
- ui/widget/jbdev
- ui/widget/loading_popup_widget
- utils/jb_config
- utils/log