Currency formatting

This commit is contained in:
unknown 2018-06-28 11:25:24 -07:00
parent c1bce6210f
commit f82a98f92a
5 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja/utils/formatting.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja/ui/app/actions_menu_button.dart'; import 'package:invoiceninja/ui/app/actions_menu_button.dart';
@ -42,7 +43,7 @@ class _ProductEditState extends State<ProductEdit> {
var product = widget.viewModel.product; var product = widget.viewModel.product;
_productKeyController.text = product.productKey; _productKeyController.text = product.productKey;
_notesController.text = product.notes; _notesController.text = product.notes;
_costController.text = product.cost?.toStringAsFixed(2) ?? ''; _costController.text = formatNumber(product.cost, widget.viewModel.state, formatNumberType: FormatNumberType.input);
_controllers.forEach((controller) => controller.addListener(_onChanged)); _controllers.forEach((controller) => controller.addListener(_onChanged));

View File

@ -32,6 +32,7 @@ class ProductEditScreen extends StatelessWidget {
} }
class ProductEditVM { class ProductEditVM {
final AppState state;
final ProductEntity product; final ProductEntity product;
final Function(ProductEntity) onChanged; final Function(ProductEntity) onChanged;
final Function(BuildContext) onSavePressed; final Function(BuildContext) onSavePressed;
@ -41,6 +42,7 @@ class ProductEditVM {
final bool isDirty; final bool isDirty;
ProductEditVM({ ProductEditVM({
@required this.state,
@required this.product, @required this.product,
@required this.onChanged, @required this.onChanged,
@required this.onSavePressed, @required this.onSavePressed,
@ -54,6 +56,7 @@ class ProductEditVM {
final product = store.state.productUIState.selected; final product = store.state.productUIState.selected;
return ProductEditVM( return ProductEditVM(
state: store.state,
isLoading: store.state.isLoading, isLoading: store.state.isLoading,
isDirty: product.isNew(), isDirty: product.isNew(),
product: product, product: product,

View File

@ -1,3 +1,5 @@
import 'package:invoiceninja/redux/app/app_state.dart';
import 'package:invoiceninja/utils/formatting.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
@ -6,6 +8,7 @@ import 'package:invoiceninja/ui/app/dismissible_entity.dart';
import '../app/entity_state_label.dart'; import '../app/entity_state_label.dart';
class ProductItem extends StatelessWidget { class ProductItem extends StatelessWidget {
final AppState state;
final DismissDirectionCallback onDismissed; final DismissDirectionCallback onDismissed;
final GestureTapCallback onTap; final GestureTapCallback onTap;
//final ValueChanged<bool> onCheckboxChanged; //final ValueChanged<bool> onCheckboxChanged;
@ -14,6 +17,7 @@ class ProductItem extends StatelessWidget {
static final productItemKey = (int id) => Key('__product_item_${id}__'); static final productItemKey = (int id) => Key('__product_item_${id}__');
ProductItem({ ProductItem({
@required this.state,
@required this.onDismissed, @required this.onDismissed,
@required this.onTap, @required this.onTap,
//@required this.onCheckboxChanged, //@required this.onCheckboxChanged,
@ -65,7 +69,7 @@ class ProductItem extends StatelessWidget {
EntityStateLabel(product), EntityStateLabel(product),
], ],
), ),
trailing: Text(product.cost.toStringAsFixed(2), trailing: Text(formatNumber(product.cost, state),
style: Theme.of(context).textTheme.title), style: Theme.of(context).textTheme.title),
), ),
); );

View File

@ -32,6 +32,7 @@ class ProductList extends StatelessWidget {
var product = viewModel.productMap[productId]; var product = viewModel.productMap[productId];
return Column(children: <Widget>[ return Column(children: <Widget>[
ProductItem( ProductItem(
state: viewModel.state,
product: product, product: product,
onDismissed: (DismissDirection direction) => onDismissed: (DismissDirection direction) =>
viewModel.onDismissed(context, product, direction), viewModel.onDismissed(context, product, direction),

View File

@ -31,6 +31,7 @@ class ProductListBuilder extends StatelessWidget {
} }
class ProductListVM { class ProductListVM {
final AppState state;
final List<int> productList; final List<int> productList;
final BuiltMap<int, ProductEntity> productMap; final BuiltMap<int, ProductEntity> productMap;
final bool isLoading; final bool isLoading;
@ -40,6 +41,7 @@ class ProductListVM {
final Function(BuildContext) onRefreshed; final Function(BuildContext) onRefreshed;
ProductListVM({ ProductListVM({
@required this.state,
@required this.productList, @required this.productList,
@required this.productMap, @required this.productMap,
@required this.isLoading, @required this.isLoading,
@ -63,6 +65,7 @@ class ProductListVM {
} }
return ProductListVM( return ProductListVM(
state: store.state,
productList: memoizedProductList(store.state.productState.map, store.state.productState.list, store.state.productListState), productList: memoizedProductList(store.state.productState.map, store.state.productState.list, store.state.productListState),
productMap: store.state.productState.map, productMap: store.state.productState.map,
isLoading: store.state.isLoading, isLoading: store.state.isLoading,