DismissableApp

import 'package:flutter/material.dart';

class DismissableApp extends StatefulWidget {
@override
_DismissableAppState createState() => _DismissableAppState();
}

class _DismissableAppState extends State<DismissableApp> {
List _trips = List<Trip>();

@override
void initState() {
_trips
..add(Trip(id: 0, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 1, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 2, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 3, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 4, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 5, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 6, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 7, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 8, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 9, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 10, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 11, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 12, tripName: 'Rome', tripLocation: 'Italy'))
..add(Trip(id: 13, tripName: 'Rome', tripLocation: 'Italy'));

super.initState();
}

void _markTripCompleted() {
//mark trip completed in database or web service
print('Completed');
}

void _deleteTrip() {
//Delete trip from database or web service
print('deleted');
}

ListTile _buildListTile(int index) {
return ListTile(
title: Text('${_trips[index].tripName}'),
subtitle: Text('${_trips[index].tripLocation}'),
leading: Icon(Icons.flight),
trailing: Icon(Icons.fastfood),
);
}

Container _buildCompleteTrip() {
return Container(
color: Colors.green,
child: Padding(
padding: EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Icon(
Icons.done,
color: Colors.white,
)
],
),
),
);
}

Container _buildRemoveTrip() {
return Container(
color: Colors.red,
child: Padding(
padding: EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Icon(
Icons.delete,
color: Colors.white,
)
],
),
),
);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemCount: _trips.length,
itemBuilder: (context, index) {
return Dismissible(
key: Key(_trips[index].id.toString()),
child: _buildListTile(index),
background: _buildCompleteTrip(),
secondaryBackground: _buildRemoveTrip(),
onDismissed: (DismissDirection direction) {
direction == DismissDirection.startToEnd
? _markTripCompleted()
: _deleteTrip();
setState(() {
_trips.removeAt(index);
});
},
);
}),
);
}
}

class Trip {
int id;
String tripName;
String tripLocation;

Trip({this.id, this.tripName, this.tripLocation});
}
DismissableApp DismissableApp Reviewed by Admin on 3:29 AM Rating: 5

No comments:

Powered by Blogger.