FLUTTER ECOSYSTEM

sachin4kmt/flutter_helper_kit

sachin4kmt/flutter_helper_kit open-source repository details.

flutter_helper_kit 專案封面
Stars
2
Forks
0
最近推送(UTC)
2026年9月16日
專案狀態
未封存
Sachin Kumawat GitHub avatar
GITHUB User

Sachin Kumawat ↗

語言DartSwiftCMakeShellCC++KotlinObjective-C

此儲存庫發佈的套件

使用的依賴

依賴清單 4 項
  • flutter{"sdk":"flutter"}
  • flutter_test開發依賴{"sdk":"flutter"}
  • flutter_lints開發依賴^6.0.0
  • pana開發依賴^0.23.12

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

展開 / 收合專案 README

flutter_helper_kit

A production-ready Flutter utility kit — extensions, widgets, animations, responsive sizing, and utils in one package with zero external dependencies (Flutter SDK only).

Consolidates helpers previously spread across custom_helper folders (Paydrop, WhereToNow, etc.) into a single maintainable package.

pub package

Platforms: Android · iOS · Web · macOS · Windows · Linux


Installation

dependencies:
  flutter_helper_kit: ^1.0.6
flutter pub add flutter_helper_kit
import 'package:flutter_helper_kit/flutter_helper_kit.dart';
Modular imports (smaller compile surface)
import 'package:flutter_helper_kit/flutter_helper_kit_extensions.dart';
import 'package:flutter_helper_kit/flutter_helper_kit_widgets.dart';
import 'package:flutter_helper_kit/flutter_helper_kit_animation.dart';
import 'package:flutter_helper_kit/flutter_helper_kit_responsive.dart';
import 'package:flutter_helper_kit/flutter_helper_kit_utils.dart';

Package structure

Every feature maps to a lib/ path. Use this table to find the right file.

Module Source path Key APIs
Extensions lib/extensions/ String, Color, DateTime, List, Map, Widget, Context, Alignment, Type conversion
Widgets lib/widgets/ AppButton, SliderButton, ReadMore, FlutterTag, Sharp corners, Pagination, etc.
Animation lib/animation/ 75+ animateWidget*, list animations, AnimatedGestureDetector
App Responsive lib/app_responsive/ ScreenUtilInit, .w, .h, .sp, .r, RPadding, RSizedBox
Reactive lib/reactive/ RxDateTime, RxnDateTime (ValueNotifier-based)
Utils lib/utils/ timeAgoCalculated, RandomImage, SystemUiUtils, MapCustomInfoWindow
Formatters lib/text_field/ NoLeadingSpaceFormatter, NoSpaceFormatter
Custom Painter lib/custom_painter/ GoogleLogoWidget

Full single import via flutter_helper_kit.dart.


Example app

Runnable demos for every module — each screen shows source file + API names.

cd example
flutter run

See example/README.md for catalog structure and how to add new demos.


Quick start

Responsive sizing (app_responsive/)
ScreenUtilInit(
  designSize: const Size(360, 690),
  builder: (_, child) => MaterialApp(home: child),
  child: Builder(
    builder: (context) => Container(
      width: 200.w,
      height: 80.h,
      child: Text('Hello', style: TextStyle(fontSize: 16.sp)),
    ),
  ),
);
API File
.w, .h, .sp, .r, .sw, .sh app_responsive/size_extension.dart
ScreenUtilInit app_responsive/screenutil_init.dart
RPadding, RSizedBox app_responsive/r_padding.dart, r_sized_box.dart
Widget animations (animation/)
Text('Hello')
  .animateWidgetElasticEntry()
  .animateWidgetGlassReveal();

// List item stagger
ListTile(title: Text('Item'))
  .animateListEntry(index: 0);

// Tap feedback
AnimatedGestureDetector(
  effectPreset: TapEffect.bounce,
  onTap: () {},
  child: Icon(Icons.favorite),
);
API File
animateWidget* (75+ methods) animation/widget_animation_extensions.dart
animateList* animation/list_item_animations.dart
AnimatedGestureDetector animation/animated_gesture_detector.dart
animateSheetReveal animation/animations_bottom_sheet.dart
Extensions
'edit_item'.toSnakeCase();           // string_case.dart
'user@mail.com'.isValidateEmail();  // validation.dart
1.50.toStringAsSmartRounded();       // smart_round_to_string.dart
Colors.blue.withColorOpacity(0.5);   // color_extension.dart
DateTime.now().timeAgo();            // date_extension.dart
'42'.toInt();                        // type_conversion.dart (on Object?)
context.showSnackBar(title: Text('Hi')); // build_context_extension.dart
Widgets
// Slider with shimmer label
SliderButton(
  width: 300,
  label: Text('Slide to confirm'),
  action: () async => true,
);

// Password strength meter
PasswordStrengthIndicator(textController: controller);

// Enhanced read-more with regex annotations
ReadMoreTextEnhanced(longText, trimLines: 3, annotations: [...]);

// iOS-style sheets (pass BuildContext)
AppCupertinoActionSheet.showActionSheet(
  context: context,
  actions: [ActionSheetItem(value: 'a', label: 'Option A')],
);

// Animated digit counter
UniversalDigitCounter(value: 12345, type: DigitAnimationType.simple);

// Ticket shape clipper
TicketClipper(
  clipper: PointedEdgeClipper(),
  child: Container(color: Colors.orange),
);

// Infinite scroll list
ListViewPagination(
  itemCount: items.length,
  hasNext: hasMore,
  nextData: fetchMore,
  itemBuilder: (_, i) => ListTile(title: Text(items[i])),
);
Widget File
AppButton widgets/app_button.dart
SliderButton widgets/slider_button.dart
PasswordStrengthIndicator widgets/password_strength_indicator/
ReadMoreText / ReadMoreTextEnhanced widgets/read_more_text.dart, read_more_enhanced.dart
FlutterTag widgets/flutter_tag/
SharpBorderRadius, SharpClipRect widgets/sharp_corners/
ListViewPagination widgets/list_view_pagination.dart
CenterTextDivider, CustomBanner widgets/center_text_divider.dart, custom_banner.dart
AvatarGlow, OutlineGlow widgets/avatar_glow/
TicketClipper widgets/ticket_clippers/
UniversalDigitCounter widgets/rolling_digit/
Reactive datetime (reactive/)
final rx = RxDateTime.now();
rx.addDuration(const Duration(hours: 1));
print(rx.format('yyyy-MM-dd'));
print(rx.timeAgo());

No GetX required — built on ValueNotifier<DateTime>.

Utils
timeAgoCalculated(DateTime.now().subtract(Duration(minutes: 5)));
RandomImage.picsumImage(300, 200);
RandomPicsumImage.image(width: 400, height: 300);
SystemUiUtils.setStatusBarColor(Colors.deepPurple);
Util File
timeAgoCalculated utils/ago_time.dart
RandomImage utils/random_image.dart
RandomPicsumImage utils/random_picsum_image.dart
SystemUiUtils utils/system_ui_utils.dart
MapCustomInfoWindow utils/map_custom_info_window.dart
showDialogWithCloseIcon utils/close_icon_show_dialog.dart
Validator utils/password_validator.dart
Numeral utils/numberal_utils.dart
Map info window (callback adapter)

No google_maps_flutter dependency in this package. Use CallbackMapInfoWindowAdapter:

final adapter = CallbackMapInfoWindowAdapter(
  onGetScreenCoordinate: (latLng) async {
    final coord = await googleMapController.getScreenCoordinate(
      LatLng(latLng.latitude, latLng.longitude),
    );
    return MapScreenCoordinate(coord.x, coord.y);
  },
);
controller.mapAdapter = adapter;
Text field formatters
TextField(
  inputFormatters: [
    NoLeadingSpaceFormatter(),
    NoSpaceFormatter(),
  ],
);

Extensions reference

Stringextensions/string/
  • string_extension.dartisEmptyOrNull, capitalize, reversed, parsing helpers
  • string_case.darttoSnakeCase, toCamelCase, toPascalCase, toKebabCase, toTitleCase
  • validation.dartisValidateEmail, validatePhone, extractPhoneNumber, URL/password checks
Colorextensions/color/color_extension.dart
  • toHex, createMaterialColor, lighten, darken, withColorOpacity, isDark, isLight
DateTimeextensions/date/
  • date_extension.darttimeAgo, isToday, isYesterday, timezone helpers
  • date_format.dartformat(pattern:), formatTime()
List / Map / Set / Iterableextensions/list/, map/, set/
  • firstOrNull, lastWhereOrNull, separatorEvery, getOrDefault, validate
Numberextensions/number/
  • integer_extension.dart, double_extension.dart, number_extension.dart
  • smart_round_to_string.darttoStringAsSmartRounded()
  • height(), width(), circularBorderRadius spacing helpers
Widget / Contextextensions/widget/, context/
  • paddingAll, withSize, visible, expanded, centered
  • width, height, showSnackBar, theme, platform checks
Other
  • alignment/alignment_extensions.dartisTop, isBottom, isLeft, isRight
  • type_conversion.darttoInt, toDouble, toBool, toStr on Object?
  • bool/bool_extensions.dartvalidate, toggle, toInt
  • duration/duration_extensions.dart.delay
  • function/scope_functions_extension.dartlet, also, run, takeIf
  • random/random_extension.dart — random helpers on math.Random

Widgets reference

UI & feedback
Widget File Description
FlutterToast flutter_toast.dart Toast messages
CustomIndicator custom_indicator.dart Loading overlay
UnFocusable hide_keyboard.dart Dismiss keyboard on outside tap
DoublePressBackWidget double_press_back_widget.dart Press back twice to exit
TapSafeGesture tap_safe_gesture.dart Debounced async tap
TextShimmer, ProfileShimmer, … simmer.dart Shimmer placeholders
Layout & display
Widget File
Space, SliverSpace space/space.dart, sliver_space.dart
SeparatedColumn separated_column.dart
FlutterListView flutter_list_view.dart
DashDivider dash_divider.dart
DottedBorderWidget dotted_border_widget.dart
GradientText gradient_text.dart
Marquee marquee_widget.dart
TextAvatar, TextIcon text_avatar.dart, text_icon_widget.dart
WidgetHelper widget_helper.dart
Forms & input
Widget File
RoundedCheckBox rounded_checkbox_widget.dart
RatingBarWidget rating_bar_widget.dart
TimerBuilder timer_builder.dart

Typedefs

Callback types in utils/type_def.dart:

FutureVoidCallback, StringCallback, IntArgVoidCallback, DoubleCallback, and more.


Migration from custom_helper

Before After
import '.../custom_helper.dart' import 'package:flutter_helper_kit/flutter_helper_kit.dart'
Get.context in Cupertino dialogs Pass context: parameter
Rx<DateTime> (GetX) RxDateTime / RxnDateTime
Google Maps LatLng in info window MapLatLng + MapInfoWindowAdapter

Screenshots

Flutter Toast
Flutter Toast
Tap Safe Gesture
Tap Safe Gesture
Avatar Glow
Avatar Glow
Outline Avatar Glow
Outline Avatar Glow
Avatar Glow MultiColor
Avatar Glow MultiColor
Outline Avatar Glow MultiColor
Outline Avatar Glow MultiColor
App Button
App Button
Marquee
Marquee
RatingBar
RatingBar
Read More Text
Read More Text
Rounded Check Box
Rounded Check Box
Text Icon
Text Icon
showDialogWithCloseIcon
showDialogWithCloseIcon
Sharp Borders
Sharp Borders
Flutter Tag
Flutter Tag

Contributing

  • Issues & features: GitHub Issues
  • New widget/API: add under lib/, export in flutter_helper_kit.dart, register demo in example/lib/catalog/example_catalog.dart
  • Contact: sachin4kmt@gmail.com

If this package helps your project, consider giving it a star on GitHub.