diff --git a/lib/views/add_by_barcode/add_by_barcode_view.dart b/lib/views/add_by_barcode/add_by_barcode_view.dart index 947279b..da1d06e 100644 --- a/lib/views/add_by_barcode/add_by_barcode_view.dart +++ b/lib/views/add_by_barcode/add_by_barcode_view.dart @@ -3,12 +3,14 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; - - class AddByBarcodeView extends StatefulWidget { final String title; + final int transactionId; + const AddByBarcodeView({ - Key key, this.title, + Key key, + this.title, + this.transactionId, }) : super(key: key); @override @@ -16,28 +18,20 @@ class AddByBarcodeView extends StatefulWidget { } class _AddByBarcodeViewState extends State { - @override void initState() { super.initState(); } - - @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: Container( - height: 2000, - child: Column( - children: [ - - ], - ), - ), + print('barcode = image-${widget.transactionId}'); + return Container( + child: Center( + child: Hero( + tag: 'text', + child: Text(widget.title)), ), ); } - } diff --git a/lib/views/add_product/add_product_view.dart b/lib/views/add_product/add_product_view.dart index 4e15a31..30e0dd5 100644 --- a/lib/views/add_product/add_product_view.dart +++ b/lib/views/add_product/add_product_view.dart @@ -20,8 +20,8 @@ class AddProductView extends StatefulWidget { } class _AddProductViewState extends State { - DictionaryService _dictionaryService = locator(); - NavigatorService _navigatorService = locator(); + final DictionaryService _dictionaryService = locator(); + final NavigatorService _navigatorService = locator(); TextEditingController _searchTextController; final FocusNode _searchFocusNode = new FocusNode(); diff --git a/lib/views/work/tabs/component/product_list_item.dart b/lib/views/work/tabs/component/product_list_item.dart index 53e00c3..6531b28 100644 --- a/lib/views/work/tabs/component/product_list_item.dart +++ b/lib/views/work/tabs/component/product_list_item.dart @@ -2,11 +2,15 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:satu/core/redux/actions/sell_actions.dart'; import 'package:satu/core/redux/store.dart'; +import 'package:satu/core/services/navigator_service.dart'; +import 'package:satu/core/utils/locator.dart'; +import 'package:satu/routes/route_names.dart'; import 'package:satu/shared/app_colors.dart'; import 'package:satu/shared/shared_styles.dart'; import 'package:satu/shared/ui_helpers.dart'; +import 'package:satu/views/add_by_barcode/add_by_barcode_view.dart'; -class ProductListItem extends StatelessWidget { +class ProductListItem extends StatefulWidget { final String name; final String ean; final String categoryName; @@ -15,15 +19,39 @@ class ProductListItem extends StatelessWidget { final bool isOdd; final int transactionId; - const ProductListItem({Key key, this.name, this.ean, this.categoryName, this.price, this.count, this.isOdd, this.transactionId}) : super(key: key); + const ProductListItem( + {Key key, this.name, this.ean, this.categoryName, this.price, this.count, this.isOdd, this.transactionId}) + : super(key: key); + + @override + _ProductListItemState createState() => _ProductListItemState(); +} + +class _ProductListItemState extends State { + final NavigatorService _navigatorService = locator(); + + void _onItemTapped(BuildContext context) { + Navigator.of(context).push(new MaterialPageRoute( + builder: (BuildContext context) => new AddByBarcodeView( + title: widget.name, + transactionId: widget.transactionId, + ))); + } @override Widget build(BuildContext context) { return Dismissible( - background: Container( alignment: AlignmentDirectional.centerEnd, color: redColor, child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text('Удалить', style: buttonTitleTextStyle,), - ),), + background: Container( + alignment: AlignmentDirectional.centerEnd, + color: redColor, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'Удалить', + style: buttonTitleTextStyle, + ), + ), + ), direction: DismissDirection.endToStart, confirmDismiss: (DismissDirection direction) async { return await showDialog( @@ -31,12 +59,9 @@ class ProductListItem extends StatelessWidget { builder: (BuildContext context) { return AlertDialog( title: const Text("Внимание"), - content: Text("Удалить товар \"${this.name}\" - ${count} ед. ?"), + content: Text("Удалить товар \"${this.widget.name}\" - ${widget.count} ед. ?"), actions: [ - FlatButton( - onPressed: () => Navigator.of(context).pop(true), - child: const Text("Удалить") - ), + FlatButton(onPressed: () => Navigator.of(context).pop(true), child: const Text("Удалить")), FlatButton( onPressed: () => Navigator.of(context).pop(false), child: const Text("Отмена"), @@ -48,11 +73,12 @@ class ProductListItem extends StatelessWidget { }, onDismissed: (direction) { print(direction); - Redux.store.dispatch(removeSellItem( transactionId: this.transactionId )); + Redux.store.dispatch(removeSellItem(transactionId: this.widget.transactionId)); }, - key: Key(name), + key: Key(widget.name), child: ListTile( - contentPadding: const EdgeInsets.symmetric( horizontal: 10.0 ,vertical: 4.0 ), + onTap: () => _onItemTapped(context), + contentPadding: const EdgeInsets.symmetric(horizontal: 10.0, vertical: 4.0), title: Padding( padding: const EdgeInsets.only(top: 4.0), child: Row( @@ -64,10 +90,21 @@ class ProductListItem extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(name , style: const TextStyle( fontWeight: FontWeight.w500 ), overflow: TextOverflow.ellipsis, maxLines: 2,), + Text( + widget.name, + style: const TextStyle(fontWeight: FontWeight.w500), + overflow: TextOverflow.ellipsis, + maxLines: 2, + ), verticalSpaceTiny, - Text('Штрих-код: $ean' , style: productSubTextStyle,), - Text(categoryName ?? '', style: productSubTextStyle,) + Text( + 'Штрих-код: ${widget.ean}', + style: productSubTextStyle, + ), + Text( + widget.categoryName ?? '', + style: productSubTextStyle, + ) ], ), ), @@ -76,15 +113,21 @@ class ProductListItem extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text('${price} ₸', style: const TextStyle( fontSize: 20, fontWeight: FontWeight.bold ),), - Text('${count} шт', style: const TextStyle( fontSize: 12 ),), + Text( + '${widget.price} ₸', + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + Text( + '${widget.count} шт', + style: const TextStyle(fontSize: 12), + ), ], ), ), ], ), ), - tileColor: !isOdd ? fillColor : backgroundColor, + tileColor: !widget.isOdd ? fillColor : backgroundColor, ), ); } diff --git a/lib/views/work/tabs/sell_view.dart b/lib/views/work/tabs/sell_view.dart index 0c7d0ad..9c258d3 100644 --- a/lib/views/work/tabs/sell_view.dart +++ b/lib/views/work/tabs/sell_view.dart @@ -17,6 +17,8 @@ import 'package:satu/views/work/tabs/component/products_header_bar.dart'; import 'package:satu/views/work/tabs/utils/ProductUtils.dart'; class SellView extends StatelessWidget { + + @override Widget build(BuildContext context) { return StoreConnector( @@ -72,6 +74,7 @@ class SellView extends StatelessWidget { child: FloatingActionButton( elevation: 2, backgroundColor: greenColor, + onPressed: () => print('check'), child: Icon( Icons.check,