kitforge 0.2.1
kitforge: ^0.2.1 copied to clipboard
An all-in-one Flutter toolkit — permissions, connectivity, toast, dialogs, bottom sheets, animation helpers, navigation, storage, logging, HTTP, validators, OTP fields, image/camera picking, lo[...]
kitforge #
An opinionated, all-in-one Flutter toolkit — one consistent API over the things almost every app needs, instead of wiring together fifteen separate packages by hand.
Permission · Connectivity · Network Monitor · Toast · Dialogs · Bottom Sheet · Animation · Navigation · Storage · Logger · HTTP · Validators · OTP · Image Picker · Camera · Location · Maps · Background Service · Notifications
Why kitforge #
- One import, one style. Every module follows the same
KitXxx.method()shape and returnsKitResult<T>instead of throwing, so error handling looks the same everywhere in your app. - Not a reinvention. Camera, location, maps, notifications and background
work are thin, well-tested wrappers over proven plugins
(
permission_handler,geolocator,image_picker,google_maps_flutter,flutter_local_notifications,workmanager,dio) — bugs in those get fixed upstream, not by us. - Tree-shakeable. Import the whole toolkit with
package:kitforge/kitforge.dart, or a single module — e.g.package:kitforge/validators.dart— to keep pure-Dart parts usable even outside Flutter. - Context-free where it matters. Toast, Dialogs, Bottom Sheet and
Navigation work from anywhere (a service, a bloc, a background callback) via
a single
navigatorKey, noBuildContextthreading required.
Install #
flutter pub add kitforge
Quick start #
import 'package:flutter/material.dart';
import 'package:kitforge/kitforge.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await KitStorage.init();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: KitNavigation.navigatorKey, // enables context-free modules
home: const HomePage(),
);
}
}
// Anywhere in your app — no BuildContext required:
KitToast.success('Profile updated');
final confirmed = await KitDialogs.confirm(
title: 'Delete item?',
message: 'This cannot be undone.',
isDestructive: true,
);
final result = await KitPermission.request(KitPermissionType.camera);
result.when(
success: (_) => KitToast.success('Camera ready'),
failure: (message, _) => KitToast.error(message),
);
See a full working demo in example/.
Modules at a glance #
| Module | Backed by | Import |
|---|---|---|
| Permission | permission_handler |
kitforge/permission.dart |
| Connectivity / Network Monitor | connectivity_plus |
kitforge/connectivity.dart, kitforge/network_monitor.dart |
| Toast | pure Dart (Overlay) | kitforge/toast.dart |
| Dialogs | pure Dart (showDialog) |
kitforge/dialogs.dart |
| Bottom Sheet | pure Dart (showModalBottomSheet) |
kitforge/bottom_sheet.dart |
| Animation | pure Dart | kitforge/animation.dart |
| Navigation | pure Dart (GlobalKey<NavigatorState>) |
kitforge/navigation.dart |
| Storage | shared_preferences + flutter_secure_storage |
kitforge/storage.dart |
| Logger | logger |
kitforge/logger.dart |
| HTTP | dio |
kitforge/http.dart |
| Validators | pure Dart | kitforge/validators.dart |
| OTP field | pure Dart | kitforge/otp.dart |
| Image Picker | image_picker |
kitforge/image_picker.dart |
| Camera (quick capture) | image_picker |
kitforge/camera.dart |
| Location | geolocator |
kitforge/location.dart |
| Maps helpers | google_maps_flutter |
kitforge/maps.dart |
| Background Service | workmanager |
kitforge/background_service.dart |
| Notifications | flutter_local_notifications + timezone |
kitforge/notifications.dart |
Platform setup #
Some modules wrap plugins that need native configuration (camera/location
permissions strings in Info.plist/AndroidManifest.xml, a Google Maps API
key, notification icons). Follow the Installing tab of each underlying
plugin's pub.dev page — kitforge does not (and cannot) inject platform config
into your app for you.
Contributing #
Issues and PRs are welcome — see CONTRIBUTING.md for
guidelines and .github/CODEOWNERS for review ownership.
Please run dart format, flutter analyze, and flutter test before opening
a PR (CI enforces this too).
License #
MIT — see LICENSE.