From 9d2bf2be3f747870a8ee29d3149ce35f4d48157f Mon Sep 17 00:00:00 2001 From: anirudha Date: Mon, 2 Apr 2018 23:30:54 +0530 Subject: [PATCH] Removed place from list when widget is dismissed --- lib/full_version/main.dart | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/full_version/main.dart b/lib/full_version/main.dart index 61e2998..b7582f7 100644 --- a/lib/full_version/main.dart +++ b/lib/full_version/main.dart @@ -40,6 +40,12 @@ class _MyHomePageState extends State { stream.listen((place) => setState(() => placeList.add(place))); } + _removePlace(places.Place place) { + if(placeList.contains(place)) { + setState(() => placeList.remove(place)); + } + } + @override initState() { super.initState(); @@ -53,15 +59,18 @@ class _MyHomePageState extends State { title: new Text(widget.title), ), body: new ListView( - children: placeList.map((place) => new PlaceWidget(place)).toList(), + children: placeList.map((place) => new PlaceWidget(place, _removePlace)).toList(), ), ); } } +typedef PlaceRemover(places.Place place); + class PlaceWidget extends StatelessWidget { - PlaceWidget(this.place); + PlaceWidget(this.place, this.removePlace); final places.Place place; + final PlaceRemover removePlace; @override Widget build(BuildContext context) { @@ -80,9 +89,12 @@ class PlaceWidget extends StatelessWidget { return new Dismissible( key: new Key(place.name), - onDismissed: (dir) => dir == DismissDirection.startToEnd - ? print('You favorited ${place.name}!') - : print('You dismissed ${place.name} ...'), + onDismissed: (dir) { + dir == DismissDirection.startToEnd + ? print('You favorited ${place.name}!') + : print('You dismissed ${place.name} ...'); + removePlace(place); + }, background: new Container( color: Colors.green, ),