import 'package:fcs/helpers/theme.dart'; import 'package:fcs/pages/carton/model/carton_model.dart'; import 'package:fcs/pages/widgets/local_app_bar.dart'; import 'package:fcs/pages/widgets/local_popup_menu_button.dart'; import 'package:fcs/pages/widgets/local_popupmenu.dart'; import 'package:fcs/pages/widgets/local_text.dart'; import 'package:fcs/pages/widgets/progress.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../domain/entities/carton.dart'; import '../../pagination/paginator_listview.dart'; import 'carton_editor.dart'; import 'carton_list_row.dart'; class CartonList extends StatefulWidget { @override _CartonListState createState() => _CartonListState(); } class _CartonListState extends State { bool _isLoading = false; int _selectedIndex = 1; @override void initState() { super.initState(); _init(); } _init() { var model = context.read(); _selectedIndex = model.selectedIndex; model.loadPaginationBoxes(_selectedIndex); if (mounted) { setState(() {}); } } @override Widget build(BuildContext context) { var boxModel = Provider.of(context); final popupMenu = LocalPopupMenuButton( popmenus: [ LocalPopupMenu( id: 1, textKey: "box.popupmenu.active", selected: boxModel.selectedIndex == 1), LocalPopupMenu( id: 2, textKey: "box.popupmenu.delivered", selected: boxModel.selectedIndex == 2) ], popupMenuCallback: (p) { setState(() { _selectedIndex = p.id; }); context.read().onChanged(_selectedIndex); }); return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: LocalAppBar(labelKey: "boxes.name", actions: [popupMenu]), floatingActionButton: FloatingActionButton.extended( onPressed: () { _newBox(); }, icon: Icon(Icons.add), label: LocalText(context, "boxes.new", color: Colors.white), backgroundColor: primaryColor, ), body: PaginatorListView( paginatorListener: boxModel.getBoxes!, rowBuilder: (p) => CartonListRow(box: p), color: primaryColor), ), ); } _newBox() { Navigator.push( context, CupertinoPageRoute(builder: (context) => CartonEditor()), ); } }