import 'dart:convert'; import 'package:aman_kassa_flutter/core/entity/Voucher.dart'; import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/models/card_data.dart'; import 'package:aman_kassa_flutter/core/models/check_data.dart'; import 'package:aman_kassa_flutter/core/route_names.dart'; import 'package:aman_kassa_flutter/core/services/DbService.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; import 'package:aman_kassa_flutter/shared/app_colors.dart'; import 'package:aman_kassa_flutter/views/check/image_show_container.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class HistoryView extends StatefulWidget { HistoryView(); @override _HistoryViewState createState() => _HistoryViewState(); } class _HistoryViewState extends State { DateFormat dateFormat = DateFormat("dd.MM.yyyy HH:mm:ss"); DbService _dbService = locator(); NavigatorService _navigatorService = locator(); List data = []; @override void initState() { super.initState(); load(); } load() async { List list = await _dbService.queryAllRowsOrderBy( Voucher_tableName, '$Voucher_columnDateTime desc'); setState(() { data = list.map((e) => Voucher.fromMap(e)).toList(); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('История чеков'), actions: [ FlatButton( child: Text( 'Очистить', style: TextStyle( color: whiteColor, fontSize: 15, fontWeight: FontWeight.bold), ), onPressed: () async { await _dbService.deleteAll(Voucher_tableName); await this.load(); }) ], ), body: ListView.separated( itemCount: data.length, separatorBuilder: (BuildContext context, int index) { return Divider(); }, itemBuilder: (BuildContext context, int index) { Voucher voucher = data[index]; CheckData checkData = CheckData.fromJson(json.decode(voucher.data)); CardData cardData = checkData.cardData; return ListTile( onTap: () { _navigatorService.push(ImageShowRoute, arguments: ImageShowModel( data: voucher.base64Data, title: voucher.name, url: voucher.url, cardData: cardData, voucher: voucher, )); }, title: buildText(voucher), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(dateFormat.format(voucher.dateTime)), cardData != null ? Text('№ ${cardData.cardNumber} exp: ${cardData.cardExpiryDate}') : Text(''), ], ), trailing: Icon(Icons.arrow_right), leading: voucher.type == VoucherTypePayment ? Icon( MdiIcons.cashRegister, size: 40, ) : voucher.type == VoucherTypeReturnPay ? Icon( MdiIcons.backupRestore, size: 40, ) : Icon( Icons.description, size: 40, ), ); }, ), ); } Text buildText(Voucher voucher) { if (voucher.type == VoucherTypePayment || voucher.type == VoucherTypeReturnPay) { return Text( '${voucher.name} на сумму: ${voucher.total.toStringAsFixed(2)}'); } return Text('${voucher.name}'); } }