The most powerful and customizable card widget for Flutter applications. Create stunning, professional cards with advanced features like image positioning, interactive overlays, content grids, rating systems, and sophisticated button controls.
π¨ 100+ Customizable Properties - Complete control over every aspect
πΌοΈ Advanced Image System - Multiple positioning options with overlay effects
π Content Grid Layouts - Perfect for metrics, analytics, and data display
β Interactive Rating System - Customizable stars with tap-to-rate functionality
π Professional Button System - 5 button styles with animations and loading states
π« Micro-animations - Smooth hover effects and press animations
π± Responsive Design - Adapts beautifully to all screen sizes
π― Production Ready - Used by thousands of developers worldwide
Add this to your package's pubspec.yaml file:
dependencies :
flutter_advanced_cards : ^1.0.0
Then run:
import 'package:flutter_advanced_cards/flutter_advanced_cards.dart' ;
AdvancedCard (
title: 'Beautiful Card' ,
description: 'This is a stunning card with advanced features' ,
cardImage: 'https://example.com/image.jpg' ,
imagePosition: ImagePosition .top,
buttonText: 'Get Started' ,
onButtonPressed: () {
print ('Button pressed!' );
},
)
Course Card with Background Image
AdvancedCard (
fullWidth: true ,
height: 280 ,
borderRadius: 20 ,
cardImage: 'https://images.unsplash.com/photo-1522202176988-66273c2fd55f' ,
imagePosition: ImagePosition .background,
statusChips: [
StatusChip (
text: 'Live Workshop' ,
position: ChipPosition .topRight,
backgroundColor: Colors .red[600 ],
),
],
title: 'Master Mobile Development' ,
titleColor: Colors .white,
titleFontSize: 24 ,
titleFontWeight: FontWeight .w800,
description: 'Learn Flutter & React Native from industry experts' ,
descriptionColor: Colors .white.withOpacity (0.9 ),
customChips: [
ContentChip (
text: 'β‘ Beginner Friendly' ,
backgroundColor: Colors .white.withOpacity (0.25 ),
textColor: Colors .white,
),
ContentChip (
text: 'π Certificate' ,
backgroundColor: Colors .white.withOpacity (0.25 ),
textColor: Colors .white,
),
],
chipPosition: ContentChipPosition .afterTitle,
price: '\$ 89' ,
priceFontSize: 28 ,
priceColor: Colors .white,
buttonText: 'Enroll Now' ,
buttonIcon: Icons .play_arrow,
buttonBackgroundColor: Colors .white,
buttonTextColor: Colors .purple[800 ],
onButtonPressed: () {
// Handle enrollment
},
)
Profile Card with Actions
AdvancedCard (
fullWidth: true ,
cardImage: 'https://images.unsplash.com/photo-1487058792275-0ad4aaf24ca7' ,
imagePosition: ImagePosition .top,
imageRatio: ImageRatio .oneThird,
showBookmarkIcon: true ,
title: 'Sarah Chen' ,
customChips: [
ContentChip (
text: 'Pro' ,
backgroundColor: Colors .purple[600 ],
textColor: Colors .white,
),
],
chipPosition: ContentChipPosition .rightOfTitle,
description: 'Senior UX Designer at Google β’ 8 years experience' ,
iconTextPairs: [
IconTextPair (
icon: Icons .work_outline,
text: 'Google' ,
),
IconTextPair (
icon: Icons .location_on_outlined,
text: 'San Francisco' ,
),
],
buttons: [
CardButton (
text: 'Connect' ,
style: CardButtonStyle .elevated,
backgroundColor: Colors .purple[600 ],
),
CardButton (
text: 'Portfolio' ,
style: CardButtonStyle .outlined,
),
],
)
AdvancedCard (
backgroundColor: Colors .green[50 ],
borderColor: Colors .green[100 ],
title: 'Weekly Revenue' ,
customChips: [
ContentChip (
text: '+12.5%' ,
backgroundColor: Colors .green[100 ],
textColor: Colors .green[700 ],
prefixIcon: Icons .trending_up,
),
],
metrics: [
MetricItem (
label: 'This Week' ,
value: '\$ 24.8K' ,
valueColor: Colors .green[700 ],
valueFontWeight: FontWeight .w800,
),
MetricItem (
label: 'Last Week' ,
value: '\$ 22.1K' ,
valueColor: Colors .grey[600 ],
),
],
metricsColumns: 1 ,
)
π Complete API Reference
Property
Type
Default
Description
width
double?
null
Fixed width of the card
height
double?
null
Fixed height of the card
fullWidth
bool
false
Makes card take full available width
fullHeight
bool
false
Makes card take full available height
backgroundColor
Color?
Colors.white
Background color of the card
borderRadius
double?
12.0
Border radius for all corners
customBorderRadius
BorderRadiusGeometry?
null
Custom border radius for specific corners
padding
EdgeInsetsGeometry?
EdgeInsets.all(16.0)
Internal padding of the card
margin
EdgeInsetsGeometry?
EdgeInsets.all(8.0)
External margin around the card
Property
Type
Default
Description
borderWidth
double?
null
Width of the border (0 = no border)
borderColor
Color?
Colors.grey.shade300
Color of the border
hasShadow
bool
true
Enable/disable shadow
shadowColor
Color?
Colors.grey.withOpacity(0.2)
Color of the shadow
shadowBlur
double?
4.0
Blur radius of the shadow
shadowSpread
double?
1.0
Spread radius of the shadow
shadowOffSet
Offset?
Offset(0, 2)
Offset of the shadow
customShadows
List<BoxShadow>?
null
Custom list of shadows
Property
Type
Default
Description
onTap
VoidCallback?
null
Callback when card is tapped
onLongPress
VoidCallback?
null
Callback when card is long pressed
enableHover
bool
true
Enable hover effects
Property
Type
Default
Description
cardImage
dynamic
null
Image source (URL, asset path, or Widget)
imagePosition
ImagePosition
ImagePosition.top
Position of image (top, left, right, background)
imageRatio
ImageRatio
ImageRatio.half
Size ratio (oneThird, half, twoThirds, full)
customImageWidth
double?
null
Custom width (overrides ratio)
customImageHeight
double?
null
Custom height (overrides ratio)
imageBorderRadius
double?
8.0
Border radius for the image
imageFit
BoxFit
BoxFit.cover
How image should fit its container
π Interactive Overlays
Property
Type
Default
Description
showLikeIcon
bool
false
Show like/heart icon on image
likeIconPosition
OverlayPosition
OverlayPosition.topRight
Position of like icon
likeIcon
IconData
Icons.favorite
Icon for like button
likeIconColor
Color?
null
Color of like icon
likeIconSize
double
24.0
Size of like icon
isLiked
bool
false
Current like state
onLikeTap
VoidCallback?
null
Callback when like icon is tapped
showBookmarkIcon
bool
false
Show bookmark/save icon
bookmarkIconPosition
OverlayPosition
OverlayPosition.topLeft
Position of bookmark icon
bookmarkIcon
IconData
Icons.bookmark
Icon for bookmark button
bookmarkIconColor
Color?
null
Color of bookmark icon
bookmarkIconSize
double
24.0
Size of bookmark icon
isBookmarked
bool
false
Current bookmark state
onBookmarkTap
VoidCallback?
null
Callback when bookmark is tapped
statusChips
List<StatusChip>?
null
Status chips displayed on image
Title Properties:
Property
Type
Default
Description
title
String?
null
Main title text
titleFontSize
double?
18.0
Font size of title
titleFontWeight
FontWeight?
FontWeight.bold
Font weight of title
titleColor
Color?
Colors.black87
Color of title text
titleFontFamily
String?
null
Font family for title
titleAlignment
ContentAlignment
ContentAlignment.left
Alignment of title
titleMaxLines
int?
null
Maximum lines for title
titleOverflow
TextOverflow?
TextOverflow.ellipsis
Overflow behavior for title
Description Properties:
Property
Type
Default
Description
description
String?
null
Description/subtitle text
descriptionFontSize
double?
14.0
Font size of description
descriptionFontWeight
FontWeight?
FontWeight.normal
Font weight of description
descriptionColor
Color?
Colors.grey[600]
Color of description text
descriptionFontFamily
String?
null
Font family for description
descriptionAlignment
ContentAlignment
ContentAlignment.left
Alignment of description
descriptionMaxLines
int?
null
Maximum lines for description
descriptionOverflow
TextOverflow?
TextOverflow.ellipsis
Overflow behavior
Property
Type
Default
Description
rating
double?
null
Current rating value (0.0 to maxRating)
maxRating
int
5
Maximum rating value
ratingStarSize
double
16.0
Size of rating stars
ratingFilledColor
Color?
Colors.orange
Color of filled stars
ratingEmptyColor
Color?
Colors.grey[300]
Color of empty stars
showRatingNumber
bool
true
Show rating number next to stars
customRatingText
String?
null
Custom text instead of rating number
onRatingChanged
ValueChanged<double>?
null
Callback when rating is changed
Property
Type
Default
Description
chips
List<String>?
null
Simple text chips
chipPosition
ContentChipPosition
ContentChipPosition.afterTitle
Position relative to title
chipBackgroundColor
Color?
Colors.grey[200]
Background color of chips
chipTextColor
Color?
Colors.grey[700]
Text color of chips
chipFontSize
double?
12.0
Font size of chip text
chipFontWeight
FontWeight?
FontWeight.w500
Font weight of chip text
chipBorderRadius
double?
16.0
Border radius of chips
onChipTap
VoidCallback?
null
Callback when chip is tapped
customChips
List<ContentChip>?
null
Advanced chips with icons and styling
Property
Type
Default
Description
metrics
List<MetricItem>?
null
List of metrics to display
metricsColumns
int
3
Number of columns in grid
metricsSpacing
double
16.0
Spacing between metric items
showMetricsDividers
bool
false
Show dividers between metrics
metricsBackgroundColor
Color?
null
Background color of metrics section
Property
Type
Default
Description
iconTextPairs
List<IconTextPair>?
null
List of icon-text combinations
Property
Type
Default
Description
price
String?
null
Price text to display
priceFontSize
double?
18.0
Font size of price
priceFontWeight
FontWeight?
FontWeight.bold
Font weight of price
priceColor
Color?
Colors.blue
Color of price text
priceAlignment
ContentAlignment
ContentAlignment.left
Alignment of price
Primary Button Properties:
Property
Type
Default
Description
buttonText
String?
null
Text displayed on button
buttonIcon
IconData?
null
Icon displayed on button
buttonIconOnRight
bool
false
Position icon on right side of text
buttonStyle
CardButtonStyle
CardButtonStyle.elevated
Style of button
buttonPosition
ButtonPosition
ButtonPosition.fullWidth
Position/alignment of button
buttonBackgroundColor
Color?
null
Background color of button
buttonTextColor
Color?
null
Text color of button
buttonBorderColor
Color?
null
Border color (for outlined style)
buttonBorderWidth
double
1.5
Width of button border
buttonFontSize
double?
16.0
Font size of button text
buttonFontWeight
FontWeight?
FontWeight.w600
Font weight of button text
buttonPadding
EdgeInsetsGeometry?
null
Custom padding for button
buttonBorderRadius
double?
8.0
Border radius of button
buttonWidth
double?
null
Custom width of button
buttonHeight
double?
null
Custom height of button
buttonIconSize
double
20.0
Size of button icon
buttonIconTextSpacing
double
8.0
Spacing between icon and text
buttonElevation
double
2.0
Elevation of elevated buttons
buttonHoverColor
Color?
null
Color when button is hovered
buttonIsLoading
bool
false
Show loading indicator
buttonIsDisabled
bool
false
Disable button interaction
onButtonPressed
VoidCallback?
null
Callback when button is pressed
Multiple Buttons:
Property
Type
Default
Description
secondaryButton
CardButton?
null
Secondary button widget
buttons
List<CardButton>?
null
List of custom buttons
buttonSpacing
double
12.0
Spacing between multiple buttons
buttonDirection
Axis
Axis.horizontal
Direction of button layout
buttonAlignment
MainAxisAlignment
MainAxisAlignment.center
Alignment of button group
Property
Type
Default
Description
contentSpacing
double
8.0
Spacing between content sections
child
Widget?
null
Custom child widget (overrides structured content)
ImagePosition.top - Image at the top of content
ImagePosition.left - Image on the left side
ImagePosition.right - Image on the right side
ImagePosition.background - Image as background with overlay
ImageRatio.oneThird - 1/3 of available space
ImageRatio.half - 1/2 of available space
ImageRatio.twoThirds - 2/3 of available space
ImageRatio.full - Full available space
OverlayPosition.topLeft - Top-left corner
OverlayPosition.topRight - Top-right corner
OverlayPosition.bottomLeft - Bottom-left corner
OverlayPosition.bottomRight - Bottom-right corner
ContentAlignment.left - Left aligned
ContentAlignment.center - Center aligned
ContentAlignment.right - Right aligned
ContentChipPosition.beforeTitle - Above the title
ContentChipPosition.afterTitle - Below the title
ContentChipPosition.rightOfTitle - Right side of title (same line)
CardButtonStyle.elevated - Filled button with shadow
CardButtonStyle.outlined - Border button
CardButtonStyle.text - Text-only button
CardButtonStyle.icon - Icon-only button
CardButtonStyle.iconText - Icon + text button
ButtonPosition.left - Left aligned
ButtonPosition.center - Center aligned
ButtonPosition.right - Right aligned
ButtonPosition.fullWidth - Full width button
StatusChip (
text: 'Featured' ,
position: ChipPosition .topRight,
backgroundColor: Colors .orange,
textColor: Colors .white,
fontSize: 12 ,
fontWeight: FontWeight .w600,
borderRadius: 8 ,
)
ContentChip (
text: 'Premium' ,
backgroundColor: Colors .blue[100 ],
textColor: Colors .blue[700 ],
prefixIcon: Icons .star,
iconColor: Colors .blue,
fontSize: 12 ,
borderRadius: 16 ,
onTap: () {
// Handle chip tap
},
)
MetricItem (
label: 'Revenue' ,
value: '\$ 24.8K' ,
labelColor: Colors .grey[600 ],
labelFontSize: 12 ,
valueColor: Colors .green[700 ],
valueFontWeight: FontWeight .bold,
valueFontSize: 16 ,
)
IconTextPair (
icon: Icons .location_on,
text: 'San Francisco' ,
iconColor: Colors .grey[500 ],
textStyle: TextStyle (
fontSize: 14 ,
color: Colors .grey[600 ],
),
)
CardButton (
text: 'Get Started' ,
icon: Icons .play_arrow,
style: CardButtonStyle .elevated,
backgroundColor: Colors .blue,
textColor: Colors .white,
borderRadius: 10 ,
height: 44 ,
onPressed: () {
// Handle button press
},
)
π¨ Customization Examples
// Dark theme card
AdvancedCard (
backgroundColor: Colors .grey[900 ],
borderColor: Colors .grey[700 ],
titleColor: Colors .white,
descriptionColor: Colors .grey[300 ],
shadowColor: Colors .black.withOpacity (0.5 ),
// ... other properties
)
// Glassmorphism effect
AdvancedCard (
backgroundColor: Colors .white.withOpacity (0.1 ),
borderWidth: 1 ,
borderColor: Colors .white.withOpacity (0.2 ),
customShadows: [
BoxShadow (
color: Colors .black.withOpacity (0.1 ),
blurRadius: 20 ,
spreadRadius: 0 ,
),
],
// ... other properties
)
LayoutBuilder (
builder: (context, constraints) {
return AdvancedCard (
fullWidth: true ,
titleFontSize: constraints.maxWidth > 600 ? 24 : 18 ,
descriptionFontSize: constraints.maxWidth > 600 ? 16 : 14 ,
imageRatio: constraints.maxWidth > 600
? ImageRatio .half
: ImageRatio .oneThird,
// ... other responsive properties
);
},
)
Use fullWidth: true instead of setting specific widths when possible
Optimize images before using them in cards
Limit the number of chips and metrics for better performance
Use isDisabled: true instead of removing buttons to maintain layout
Consistent spacing - Use the same contentSpacing throughout your app
Color harmony - Stick to your app's color palette
Typography hierarchy - Use different font sizes to create visual hierarchy
Accessibility - Ensure sufficient color contrast and touch targets
// E-commerce product card
AdvancedCard (
cardImage: product.imageUrl,
imagePosition: ImagePosition .top,
showLikeIcon: true ,
title: product.name,
description: product.description,
price: '\$ ${product .price }' ,
rating: product.rating,
buttonText: 'Add to Cart' ,
onButtonPressed: () => addToCart (product),
)
// Social media post card
AdvancedCard (
cardImage: post.authorAvatar,
imagePosition: ImagePosition .left,
imageRatio: ImageRatio .oneThird,
title: post.authorName,
description: post.content,
iconTextPairs: [
IconTextPair (icon: Icons .favorite, text: '${post .likes }' ),
IconTextPair (icon: Icons .comment, text: '${post .comments }' ),
],
buttons: [
CardButton (text: 'Like' , style: CardButtonStyle .text),
CardButton (text: 'Comment' , style: CardButtonStyle .text),
],
)
// Dashboard metric card
AdvancedCard (
backgroundColor: Colors .blue[50 ],
title: 'Monthly Revenue' ,
customChips: [
ContentChip (
text: '+15.3%' ,
backgroundColor: Colors .green[100 ],
textColor: Colors .green[700 ],
prefixIcon: Icons .trending_up,
),
],
metrics: [
MetricItem (label: 'This Month' , value: '\$ 125.4K' ),
MetricItem (label: 'Last Month' , value: '\$ 108.9K' ),
],
metricsColumns: 2 ,
)
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this package helpful, please:
Made with β€οΈ for the Flutter community