A highly customizable tooltip widget for Flutter applications, offering rich functionality for both desktop and mobile platforms.
- Flexible Content: Supports any widget as both the child and tooltip content.
- Customizable Appearance:
- Adjustable tooltip width and height
- Customizable background color
- Configurable border radius
- Custom padding
- Adjustable elevation
- Option for custom decoration
- Customizable text style
- Smart Positioning: Automatically adjusts position to fit within screen bounds
- Timing Control:
- Configurable hover delay before showing tooltip
- Adjustable show and hide durations for smooth animations
- Platform-Specific Behavior:
- Hover functionality for desktop and web platforms
- Touch support for mobile platforms
- Interactive Features:
- Tooltip can be pinned on tap/click
- Tapping outside the tooltip dismisses it
- Animated Display: Smooth fade-in and fade-out animations
Add this to your package's pubspec.yaml
file:
dependencies:
custom_tooltip: ^1.0.0
Import the package in your Dart code:
import 'package:custom_tooltip/custom_tooltip.dart';
Basic usage:
CustomTooltip(
child: Text('Hover or tap me'),
tooltip: Text('This is a custom tooltip'),
tooltipWidth: 200,
tooltipHeight: 100,
backgroundColor: Colors.blue,
borderRadius: 8,
padding: EdgeInsets.all(8),
elevation: 6.0,
)
Advanced usage with more customization:
CustomTooltip(
child: Icon(Icons.info),
tooltip: Column(
children: [
Text('Custom Tooltip'),
SizedBox(height: 10),
ElevatedButton(
child: Text('Action'),
onPressed: () {
// Handle button press
},
),
],
),
tooltipWidth: 250,
tooltipHeight: 150,
backgroundColor: Colors.black87,
borderRadius: 12,
padding: EdgeInsets.all(12),
elevation: 8,
hoverShowDelay: Duration(milliseconds: 500),
showDuration: Duration(milliseconds: 300),
hideDuration: Duration(milliseconds: 200),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.blue, Colors.purple],
),
borderRadius: BorderRadius.circular(12),
),
textStyle: TextStyle(color: Colors.white, fontSize: 16),
)
- The tooltip can be dismissed by tapping outside of it.
- On desktop/web, the tooltip appears after hovering for a specified duration.
- On mobile, tapping the child widget shows the tooltip.
- Tapping the child while the tooltip is visible will pin it in place.
- The tooltip automatically adjusts its position to stay within screen bounds.
For more detailed examples, please refer to the example
folder in the package repository.
Parameter | Type | Description |
---|---|---|
child |
Widget |
The widget that triggers the tooltip |
tooltip |
Widget |
The content of the tooltip |
tooltipWidth |
double? |
Width of the tooltip |
tooltipHeight |
double? |
Height of the tooltip |
backgroundColor |
Color |
Background color of the tooltip |
borderRadius |
double |
Border radius of the tooltip |
padding |
EdgeInsetsGeometry |
Internal padding of the tooltip |
elevation |
double |
Elevation (shadow) of the tooltip |
hoverShowDelay |
Duration |
Delay before showing tooltip on hover |
showDuration |
Duration |
Duration of the show animation |
hideDuration |
Duration |
Duration of the hide animation |
decoration |
BoxDecoration? |
Custom decoration for the tooltip |
textStyle |
TextStyle? |
Text style for the tooltip content |
Contributions to the Custom Tooltip package are welcome! Please feel free to submit issues and pull requests on our GitHub repository.
This project is licensed under the MIT License - see the LICENSE file for details.