Kickin
A Flutter toolkit that eliminates boilerplate and speeds up development. It bundles networking, storage, utilities, state management helpers, extensions, and UI components — all under one package.
You can use the whole thing, or just the parts you need. Each sub-package also works independently.
Installation
flutter pub add kickin
Or add it manually to your pubspec.yaml:
dependencies:
kickin: ^0.0.1+1
Then import it:
import 'package:kickin/kickin.dart';
What's included
| Module | What it gives you |
|---|---|
| Network | HTTP client wrapper over Dio with typed responses, caching, and connectivity monitoring |
| Storage | Hive-backed local storage: general, encrypted, and lazy-loaded boxes |
| Utilities | Safe async operations (KResult), background isolates (KIsolate), logging |
| State Management | Riverpod helpers: KAbsorber, KCachedNotifier, provider extensions |
| Extensions | Shortcuts on BuildContext, num, Duration, and more |
| Widgets | KScaffold, KSmoothListView, KAdaptiveImage, KAnimatedSizing, and others |
Modules
Network
HTTP requests with typed responses, structured error handling, optional caching, and internet monitoring.
Built on top of Dio. See the full docs: kickin_network
// Define your API hub and feature clients once, use them anywhere
final result = await Api.instance.users.getProfile.catchErrorOnSendResult();
if (result.isSuccess) {
print(result.value); // typed model
} else {
print(result.error); // readable error string
}
Storage
Three Hive box types for different storage needs.
See the full docs: kickin_storage
await KHive.on.initialize(initApp: true, initSecure: true);
// General
await KHive.on.app.setData(key: 'theme', value: 'dark');
final theme = KHive.on.app.getData(key: 'theme');
// Encrypted
await KHive.on.secure.setData(key: 'token', value: 'abc123');
Utilities
Safe wrappers for async operations and background tasks.
See the full docs: kickin_utilities
// Run without try-catch — errors are captured in the result
final result = await KResult.tryRunAsync(() => fetchData());
if (result.isSuccess) {
print(result.data);
} else {
print(result.message);
}
State Management
Riverpod helpers that let you consume providers without wrapping everything in a ConsumerWidget.
// Watch a provider inline, inside any widget tree
KAbsorber.watch(
userProvider,
builder: (ref, user, child) => Text(user.name),
);
// Read a provider value anywhere
final user = userProvider.read(ref);
Key classes: KAbsorber, KAbsorbRead, KAbsorbWatch, KWatchNotifier, KCachedNotifier
Extensions
Shortcuts on common types to reduce noise in your code.
// Spacing
24.toVBox // SizedBox(height: 24)
16.toHBox // SizedBox(width: 16)
// Context helpers
context.isDarkMode
context.deviceWidth
context.topPadding
Key classes: Context extensions, Duration extensions, ProviderWarmupMixin, ScrollOffsetNotifierMixin
Widgets
Ready-to-use UI components with sensible defaults.
KScaffold(
title: 'Home',
body: KSmoothListView(
children: [
KTopPadding.sliver(),
KAdaptiveImage(
path: KFilePath(path: localPath, url: 'https://...'),
preferLocal: true,
),
KBottomPadding.sliver(),
],
),
);
Key classes:
| Widget / Class | Purpose |
|---|---|
KScaffold |
App shell with built-in app bar and footer support |
KSmoothListView |
Smooth momentum scrolling (macOS/Windows style) |
KSmoothCustomScrollView |
Same as above, for slivers |
KAnimatedSizing |
Animated size transitions |
KScaleGestureWrapper |
Scale-on-press gesture handler |
KAdaptiveImage |
Loads from local path or URL, with fallback |
KTopPadding / KBottomPadding |
Safe area padding helpers |
KText |
Styled text with consistent typography |
Use sub-packages independently
Each module is available as its own package if you only need part of the toolkit:
| Package | Install |
|---|---|
kickin_network |
flutter pub add kickin_network |
kickin_storage |
flutter pub add kickin_storage |
kickin_utilities |
flutter pub add kickin_utilities |
Kickin is designed to be adopted in parts. Use what helps, skip what doesn't.