diff --git a/lib/presentation/home_page/card.dart b/lib/presentation/home_page/card.dart index 10bc695..b8b9c63 100644 --- a/lib/presentation/home_page/card.dart +++ b/lib/presentation/home_page/card.dart @@ -14,11 +14,14 @@ class _CardData { }); } +typedef OnLikeCallback = void Function(String title, bool isLiked)?; + class _Card extends StatefulWidget { final String title; final String description; final IconData icon; final String? imageUrl; + final OnLikeCallback onLike; const _Card({ super.key, @@ -26,13 +29,18 @@ class _Card extends StatefulWidget { required this.description, this.icon = Icons.hail, this.imageUrl, + this.onLike, }); - factory _Card.fromData(_CardData data) => _Card( + factory _Card.fromData( + _CardData data, { + final OnLikeCallback onLike, + }) => _Card( title: data.title, description: data.description, icon: data.icon, imageUrl: data.imageUrl, + onLike: onLike, ); @override @@ -81,7 +89,7 @@ class _CardState extends State<_Card> { ), Flexible( child: Padding( - padding: const EdgeInsets.only(left: 15.0), + padding: const EdgeInsets.only(left: 12.0, top: 12, bottom: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -105,6 +113,7 @@ class _CardState extends State<_Card> { setState(() { isLiked = !isLiked; }); + widget.onLike?.call(widget.title, isLiked); }, child: AnimatedSwitcher( duration: const Duration(milliseconds: 100), diff --git a/lib/presentation/home_page/home_page.dart b/lib/presentation/home_page/home_page.dart index 0fdcae7..2779709 100644 --- a/lib/presentation/home_page/home_page.dart +++ b/lib/presentation/home_page/home_page.dart @@ -12,6 +12,18 @@ class MyHomePage extends StatefulWidget { } class _MyHomePageState extends State { + @override + void initState() { + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Hello', style: Theme.of(context).textTheme.bodyLarge), + backgroundColor: Colors.deepPurple.shade200, + duration: const Duration(seconds: 4), + )); + }); + super.initState(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -52,9 +64,22 @@ class Body extends StatelessWidget { child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.center, - children: cardsData.map((e) => _Card.fromData(e)).toList(), + children: cardsData.map((e) => _Card.fromData(e, onLike: (title, isLiked) => _showSnackBar(context, title, isLiked))).toList(), ), ), ); } + + void _showSnackBar(BuildContext context, String title, bool isLiked) { + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text( + 'Card $title ${isLiked ? 'liked' : 'disliked'}', + style: Theme.of(context).textTheme.bodyLarge + ), + backgroundColor: Colors.deepPurple.shade200, + duration: const Duration(seconds: 2), + )); + }); + } }