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.

Libraries

kickin