smart_dev_widgets 0.0.3
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
Columnwith spacing, padding, tap handling, and SafeArea support. - SmartRow: A flexible
Rowwith padding, margin, and tap handling. - SmartText: A versatile
TextorAutoSizeTextwith styling, padding, and layout options. - SmartButton: A feature-rich button with loading states, prefix/suffix images, and customizable styles.
- SmartSingleChildScrollView: An enhanced
SingleChildScrollViewwith 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
ExpansionTilewith animated expansion, trailing icons, and theme integration. - Global Configuration: Use
SmartDevWidgetsConfigto set default styles and behaviors across all widgets. - Responsive Design: Integrates with
flutter_screenutilfor 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