Pass a Method as A Parameter to A Widget in Flutter
When creating a custom widget, we need to allow a robust way of handling onTap or any similar event. That’s why we need to pass a function to a custom widget’s class.
In Flutter, you can easily pass a method as a parameter to a widget. This lets you customize the behavior of the widget without having to create a new one. In this post, we’ll show you how to do it.
We will use VoidCallBack typedef which is a signature of callbacks that have no arguments. This typedef won’t return any data as well.
class ListCard extends StatefulWidget { final List<Widget>? children; final VoidCallback? onTap; final Color? cardColor; const ListCard({Key? key, this.children, this.onTap, this.cardColor}) : super(key: key); @override State<ListCard> createState() => _ListCardState(); } class _ListCardState extends State<ListCard> { @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.only(bottom: MyTheme.paddingTop), child: RippleEffect( onTap: widget.onTap, child: Container( padding: const EdgeInsets.all(MyTheme.padding), decoration: BoxDecoration( color: widget.cardColor ?? MyTheme.cardColor, border: Border.all( color: widget.cardColor ?? MyTheme.cardColor, ), borderRadius: MyTheme.radius), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: widget.children!, )), ), ); } }