import 'package:fcs/model/shipment_model.dart'; import 'package:fcs/widget/bottom_up_page_route.dart'; import 'package:fcs/widget/local_text.dart'; import 'package:provider/provider.dart'; import 'package:fcs/pages/search_page.dart'; import 'package:fcs/vo/buyer.dart'; import 'package:fcs/widget/localization/app_translations.dart'; import 'package:flutter/material.dart'; import 'package:fcs/widget/progress.dart'; import '../theme/theme.dart'; import 'shipment_editor.dart'; import 'shipment_list_row.dart'; class ShipmentList extends StatefulWidget { @override _ShipmentListState createState() => _ShipmentListState(); } class _ShipmentListState extends State { Buyer buyer; bool _isLoading = false; @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return LocalProgress( inAsyncCall: _isLoading, child: DefaultTabController( length: 3, child: Scaffold( appBar: AppBar( centerTitle: true, leading: new IconButton( icon: new Icon(Icons.close), onPressed: () => Navigator.of(context).pop(), ), backgroundColor: primaryColor, title: LocalText(context, 'shipment.list.title', color: Colors.white, fontSize: 20), actions: [ IconButton( icon: Icon( Icons.search, color: Colors.white, ), iconSize: 30, onPressed: () => showPlacesSearch(context), ), ], bottom: TabBar( unselectedLabelColor: Colors.grey, tabs: [ Tab( text: "Upcoming", ), Tab(text: "Completed"), Tab(text: "Canceled"), ], ), ), floatingActionButton: FloatingActionButton.extended( onPressed: () { _newShipment(); }, icon: Icon(Icons.add), label: Text(AppTranslations.of(context).text("shipment.add")), backgroundColor: primaryColor, ), body: TabBarView( children: [_upComing(), _completed(), _canceled()], )), ), ); } _newShipment() { Navigator.of(context).push(BottomUpPageRoute(ShipmentEditor())); } Widget _upComing() { var shipmentModel = Provider.of(context); return Column( children: [ Expanded( child: new ListView.separated( separatorBuilder: (context, index) => Divider( color: Colors.black, ), scrollDirection: Axis.vertical, padding: EdgeInsets.only(top: 15), shrinkWrap: true, itemCount: shipmentModel.upcoming.length, itemBuilder: (BuildContext context, int index) { return ShipmentListRow(shipment: shipmentModel.upcoming[index]); }), ), ], ); } Widget _completed() { var shipmentModel = Provider.of(context); return Column( children: [ Expanded( child: new ListView.separated( separatorBuilder: (context, index) => Divider( color: Colors.black, ), scrollDirection: Axis.vertical, padding: EdgeInsets.only(top: 15), shrinkWrap: true, itemCount: shipmentModel.completed.length, itemBuilder: (BuildContext context, int index) { return ShipmentListRow( shipment: shipmentModel.completed[index]); }), ), ], ); } Widget _canceled() { var shipmentModel = Provider.of(context); return Column( children: [ Expanded( child: new ListView.separated( separatorBuilder: (context, index) => Divider( color: Colors.black, ), scrollDirection: Axis.vertical, padding: EdgeInsets.only(top: 15), shrinkWrap: true, itemCount: shipmentModel.canceled.length, itemBuilder: (BuildContext context, int index) { return ShipmentListRow(shipment: shipmentModel.canceled[index]); }), ), ], ); } }