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/material.dart';
import 'package:invoiceninja/ui/app/actions_menu_button.dart';
@ -42,7 +43,7 @@ class _ProductEditState extends State<ProductEdit> {
var product = widget.viewModel.product;
_productKeyController.text = product.productKey;
_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));

View File

@ -32,6 +32,7 @@ class ProductEditScreen extends StatelessWidget {
}
class ProductEditVM {
final AppState state;
final ProductEntity product;
final Function(ProductEntity) onChanged;
final Function(BuildContext) onSavePressed;
@ -41,6 +42,7 @@ class ProductEditVM {
final bool isDirty;
ProductEditVM({
@required this.state,
@required this.product,
@required this.onChanged,
@required this.onSavePressed,
@ -54,6 +56,7 @@ class ProductEditVM {
final product = store.state.productUIState.selected;
return ProductEditVM(
state: store.state,
isLoading: store.state.isLoading,
isDirty: product.isNew(),
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/material.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';
class ProductItem extends StatelessWidget {
final AppState state;
final DismissDirectionCallback onDismissed;
final GestureTapCallback onTap;
//final ValueChanged<bool> onCheckboxChanged;
@ -14,6 +17,7 @@ class ProductItem extends StatelessWidget {
static final productItemKey = (int id) => Key('__product_item_${id}__');
ProductItem({
@required this.state,
@required this.onDismissed,
@required this.onTap,
//@required this.onCheckboxChanged,
@ -65,7 +69,7 @@ class ProductItem extends StatelessWidget {
EntityStateLabel(product),
],
),
trailing: Text(product.cost.toStringAsFixed(2),
trailing: Text(formatNumber(product.cost, state),
style: Theme.of(context).textTheme.title),
),
);

View File

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

View File

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