smart_dev_widgets 0.0.3 copy "smart_dev_widgets: ^0.0.3" to clipboard
smart_dev_widgets: ^0.0.3 copied to clipboard

A collection of reusable Flutter widgets for common UI components by SmartDev.

SmartDevWidgets #

A collection of reusable, customizable Flutter widgets designed to simplify and accelerate UI development. Built by SmartDev, this package provides widgets for common UI components with consistent styling, responsive design, and global configuration support.

Features #

  • SmartColumn: A customizable Column with spacing, padding, tap handling, and SafeArea support.
  • SmartRow: A flexible Row with padding, margin, and tap handling.
  • SmartText: A versatile Text or AutoSizeText with styling, padding, and layout options.
  • SmartButton: A feature-rich button with loading states, prefix/suffix images, and customizable styles.
  • SmartSingleChildScrollView: An enhanced SingleChildScrollView with pull-to-refresh, SafeArea, and keyboard dismissal.
  • SmartImage: A robust image viewer supporting assets, files, network images, and SVGs with caching and error handling.
  • SmartExpansionTile: A customizable ExpansionTile with animated expansion, trailing icons, and theme integration.
  • Global Configuration: Use SmartDevWidgetsConfig to set default styles and behaviors across all widgets.
  • Responsive Design: Integrates with flutter_screenutil for consistent sizing across devices.

Installation #

Add smart_dev_widgets to your pubspec.yaml:

dependencies:
  smart_dev_widgets: ^0.0.1

Run the following command to install the package:

flutter pub get

Dependencies #

Ensure the following dependencies are included in your pubspec.yaml:

dependencies:
  flutter_screenutil: ^5.9.0
  auto_size_text: ^3.0.0
  cached_network_image: ^3.3.0
  flutter_svg: ^2.0.7

For the test app or your application, include assets:

flutter:
  assets:
    - assets/images/

Setup #

Initialize SmartDevWidgetsConfig at app startup to set default values for all widgets. Wrap your app with ScreenUtilInit for responsive sizing.

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_dev_widgets/smart_dev_widgets.dart';

void main() {
  SmartDevWidgetsConfig().initialize(
    // SmartColumn defaults
    columnMainAxisAlignment: MainAxisAlignment.center,
    columnCrossAxisAlignment: CrossAxisAlignment.start,
    columnSpacing: 8.0,
    columnPadding: EdgeInsets.all(10.w),
    columnIsInkwell: true,
    // SmartRow defaults
    rowMainAxisAlignment: MainAxisAlignment.spaceEvenly,
    rowPadding: EdgeInsets.symmetric(horizontal: 8.w),
    rowIsInkwell: true,
    // SmartText defaults
    textStyle: TextStyle(
      fontSize: 16.0.sp,
      fontWeight: FontWeight.w500,
      color: Colors.blue,
    ),
    textPadding: EdgeInsets.all(4.w),
    textOverflow: TextOverflow.ellipsis,
    textMaxLines: 2,
    // SmartButton defaults
    buttonActiveBackgroundColor: Colors.blue,
    buttonHeight: 48.w,
    buttonPadding: EdgeInsets.symmetric(horizontal: 12.w),
    // SmartSingleChildScrollView defaults
    scrollViewPadding: EdgeInsets.all(16.w),
    scrollViewSafeArea: true,
    // SmartImage defaults
    imagePlaceholderPath: 'assets/placeholder.png',
    imageLoadingColor: Colors.blue,
    imagePadding: EdgeInsets.all(4.w),
    imageHeight: 100.w,
    imageWidth: 100.w,
    // SmartExpansionTile defaults
    expansionTileTrailingExpandedIconPath: 'assets/arrow_up.png',
    expansionTileTrailingCollapsedIconPath: 'assets/arrow_down.png',
    expansionTilePadding: EdgeInsets.all(8.w),
    expansionTileMargin: EdgeInsets.symmetric(horizontal: 16.w),
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      designSize: const Size(375, 812),
      minTextAdapt: true,
      splitScreenMode: true,
      builder: (context, child) {
        return MaterialApp(
          home: child,
        );
      },
      child: const HomePage(),
    );
  }
}

Usage #

SmartColumn #

A customizable Column with spacing, padding, and tap handling.

SmartColumn(
  spacing: 8.0,
  padding: EdgeInsets.all(16.w),
  onTap: () {
    print('Column tapped!');
  },
  isInkwell: true,
  children: [
    Text('Item 1'),
    Text('Item 2'),
  ],
)

SmartRow #

A flexible Row with alignment, padding, and tap handling.

SmartRow(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  padding: EdgeInsets.symmetric(horizontal: 8.w),
  onTap: () {
    print('Row tapped!');
  },
  isInkwell: true,
  children: [
    Text('Left'),
    Text('Right'),
  ],
)

SmartText #

A customizable Text or AutoSizeText with styling and layout options.

SmartText(
  'Hello World',
  style: TextStyle(fontSize: 18.sp, color: Colors.blue),
  padding: EdgeInsets.all(4.w),
  onTap: () {
    print('Text tapped!');
  },
  isAutoSizeText: true,
  maxLines: 2,
  overflow: TextOverflow.ellipsis,
)

SmartButton #

A versatile button with loading states and image support.

SmartButton(
  title: 'Click Me',
  onTap: () {
    print('Button tapped!');
  },
  prefixImage: 'assets/icon.png',
  isLoading: false,
  activeBackgroundColor: Colors.blue,
  height: 48.w,
)

SmartSingleChildScrollView #

An enhanced SingleChildScrollView with refresh and keyboard dismissal.

SmartSingleChildScrollView(
  padding: EdgeInsets.all(16.w),
  safeArea: true,
  onRefresh: () async {
    await Future.delayed(Duration(seconds: 1));
    print('Refreshed!');
  },
  child: Column(
    children: [
      Text('Scrollable Content'),
    ],
  ),
)

SmartImage #

A robust image viewer supporting multiple image types.

SmartImage(
  path: 'assets/icon.png',
  height: 100.w,
  width: 100.w,
  fit: BoxFit.cover,
  onTap: () {
    print('Image tapped!');
  },
)

SmartExpansionTile #

A customizable ExpansionTile with animated expansion and trailing icons.

SmartExpansionTile(
  title: SmartText('Expand Me'),
  padding: EdgeInsets.all(8.w),
  onExpansionChanged: (expanded) {
    print('Expanded: $expanded');
  },
  children: [
    SmartText('Child Content 1'),
    SmartText('Child Content 2'),
  ],
)

Widgets #

Widget Description
SmartColumn Customizable Column with spacing, padding, margin, and tap handling.
SmartRow Flexible Row with padding, margin, and tap handling.
SmartText Enhanced Text or AutoSizeText with styling and layout options.
SmartButton Feature-rich button with loading, images, and styling.
SmartSingleChildScrollView SingleChildScrollView with refresh, SafeArea, and keyboard dismissal.
SmartImage Image viewer for assets, files, network images, and SVGs with caching.
SmartExpansionTile Customizable ExpansionTile with animated expansion and trailing icons.

Configuration #

Use SmartDevWidgetsConfig to set global defaults. Example properties:

  • SmartColumn: columnSpacing, columnPadding, columnIsInkwell
  • SmartRow: rowMainAxisAlignment, rowPadding, rowIsInkwell
  • SmartText: textStyle, textPadding, textMaxLines
  • SmartButton: buttonHeight, buttonActiveBackgroundColor, buttonImageSize
  • SmartSingleChildScrollView: scrollViewPadding, scrollViewSafeArea
  • SmartImage: imagePlaceholderPath, imageLoadingColor, imageHeight, imageWidth
  • SmartExpansionTile: expansionTilePadding, expansionTileTrailingExpandedIconPath, expansionTileAnimationDuration

See the Setup section for a full example.

Testing #

The package includes comprehensive unit tests. Run tests with:

cd smart_dev_widgets
flutter test

Issues #

Report bugs or request features on the GitHub Issues page.

License #

This package is licensed under the MIT License. See the LICENSE file for details.

Contact #

For support, contact us at developerdivyaraj@gmail.com.


Built with ❤️ by SmartDev

0
likes
120
points
179
downloads

Publisher

unverified uploader

Weekly Downloads

A collection of reusable Flutter widgets for common UI components by SmartDev.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

auto_size_text, cached_network_image, flutter, flutter_screenutil, flutter_svg

More

Packages that depend on smart_dev_widgets