Expenses
This commit is contained in:
parent
52cfaad2b9
commit
4c5c250698
|
|
@ -0,0 +1,10 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ListDivider extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Divider(
|
||||||
|
height: 1,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/client_list_vm.dart';
|
import 'package:invoiceninja_flutter/ui/client/client_list_vm.dart';
|
||||||
|
|
@ -77,9 +78,7 @@ class ClientList extends StatelessWidget {
|
||||||
return RefreshIndicator(
|
return RefreshIndicator(
|
||||||
onRefresh: () => viewModel.onRefreshed(context),
|
onRefresh: () => viewModel.onRefreshed(context),
|
||||||
child: ListView.separated(
|
child: ListView.separated(
|
||||||
separatorBuilder: (context, index) => Divider(
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
height: 1,
|
|
||||||
),
|
|
||||||
itemCount: viewModel.clientList.length,
|
itemCount: viewModel.clientList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final clientId = viewModel.clientList[index];
|
final clientId = viewModel.clientList[index];
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/expense/expense_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/expense/expense_list_item.dart';
|
||||||
|
|
@ -113,8 +114,9 @@ class ExpenseList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.expenseList.length,
|
itemCount: viewModel.expenseList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final expenseId = viewModel.expenseList[index];
|
final expenseId = viewModel.expenseList[index];
|
||||||
|
|
@ -123,16 +125,13 @@ class ExpenseList extends StatelessWidget {
|
||||||
viewModel.state.clientState.map[expense.clientId];
|
viewModel.state.clientState.map[expense.clientId];
|
||||||
final vendor =
|
final vendor =
|
||||||
viewModel.state.vendorState.map[expense.vendorId];
|
viewModel.state.vendorState.map[expense.vendorId];
|
||||||
return Column(
|
return ExpenseListItem(
|
||||||
children: <Widget>[
|
|
||||||
ExpenseListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
expense: expense,
|
expense: expense,
|
||||||
client: client,
|
client: client,
|
||||||
vendor: vendor,
|
vendor: vendor,
|
||||||
onTap: () =>
|
onTap: () => viewModel.onExpenseTap(context, expense),
|
||||||
viewModel.onExpenseTap(context, expense),
|
|
||||||
onEntityAction: (EntityAction action) {
|
onEntityAction: (EntityAction action) {
|
||||||
if (action == EntityAction.more) {
|
if (action == EntityAction.more) {
|
||||||
_showMenu(context, expense);
|
_showMenu(context, expense);
|
||||||
|
|
@ -142,11 +141,6 @@ class ExpenseList extends StatelessWidget {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () => _showMenu(context, expense),
|
onLongPress: () => _showMenu(context, expense),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
|
import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/invoice_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/invoice_list_item.dart';
|
||||||
|
|
@ -111,8 +112,9 @@ class InvoiceList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.invoiceList.length,
|
itemCount: viewModel.invoiceList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final invoiceId = viewModel.invoiceList[index];
|
final invoiceId = viewModel.invoiceList[index];
|
||||||
|
|
@ -120,14 +122,11 @@ class InvoiceList extends StatelessWidget {
|
||||||
final client =
|
final client =
|
||||||
viewModel.clientMap[invoice.clientId] ??
|
viewModel.clientMap[invoice.clientId] ??
|
||||||
ClientEntity();
|
ClientEntity();
|
||||||
return Column(
|
return InvoiceListItem(
|
||||||
children: <Widget>[
|
|
||||||
InvoiceListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
invoice: invoice,
|
invoice: invoice,
|
||||||
client:
|
client: viewModel.clientMap[invoice.clientId] ??
|
||||||
viewModel.clientMap[invoice.clientId] ??
|
|
||||||
ClientEntity(),
|
ClientEntity(),
|
||||||
onTap: () =>
|
onTap: () =>
|
||||||
viewModel.onInvoiceTap(context, invoice),
|
viewModel.onInvoiceTap(context, invoice),
|
||||||
|
|
@ -141,11 +140,6 @@ class InvoiceList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, invoice, client),
|
_showMenu(context, invoice, client),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/data/models/payment_model.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart';
|
import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/payment/payment_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/payment/payment_list_item.dart';
|
||||||
|
|
@ -128,17 +129,16 @@ class PaymentList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.paymentList.length,
|
itemCount: viewModel.paymentList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final paymentId = viewModel.paymentList[index];
|
final paymentId = viewModel.paymentList[index];
|
||||||
final payment = state.paymentState.map[paymentId];
|
final payment = state.paymentState.map[paymentId];
|
||||||
final client =
|
final client =
|
||||||
paymentClientSelector(paymentId, state);
|
paymentClientSelector(paymentId, state);
|
||||||
return Column(
|
return PaymentListItem(
|
||||||
children: <Widget>[
|
|
||||||
PaymentListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
payment: payment,
|
payment: payment,
|
||||||
|
|
@ -154,11 +154,6 @@ class PaymentList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, payment, client),
|
_showMenu(context, payment, client),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/product/product_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/product/product_list_item.dart';
|
||||||
|
|
@ -74,13 +75,13 @@ class ProductList extends StatelessWidget {
|
||||||
Widget _buildListView(BuildContext context) {
|
Widget _buildListView(BuildContext context) {
|
||||||
return RefreshIndicator(
|
return RefreshIndicator(
|
||||||
onRefresh: () => viewModel.onRefreshed(context),
|
onRefresh: () => viewModel.onRefreshed(context),
|
||||||
child: ListView.builder(
|
child: ListView.separated(
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.productList.length,
|
itemCount: viewModel.productList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final productId = viewModel.productList[index];
|
final productId = viewModel.productList[index];
|
||||||
final product = viewModel.productMap[productId];
|
final product = viewModel.productMap[productId];
|
||||||
return Column(children: <Widget>[
|
return ProductListItem(
|
||||||
ProductListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
product: product,
|
product: product,
|
||||||
|
|
@ -93,11 +94,7 @@ class ProductList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onTap: () => viewModel.onProductTap(context, product),
|
onTap: () => viewModel.onProductTap(context, product),
|
||||||
onLongPress: () => _showMenu(context, product),
|
onLongPress: () => _showMenu(context, product),
|
||||||
),
|
);
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/project/project_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/project/project_list_item.dart';
|
||||||
|
|
@ -110,8 +111,9 @@ class ProjectList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.projectList.length,
|
itemCount: viewModel.projectList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final projectId = viewModel.projectList[index];
|
final projectId = viewModel.projectList[index];
|
||||||
|
|
@ -119,9 +121,7 @@ class ProjectList extends StatelessWidget {
|
||||||
final client =
|
final client =
|
||||||
viewModel.clientMap[project.clientId] ??
|
viewModel.clientMap[project.clientId] ??
|
||||||
ClientEntity(id: project.clientId);
|
ClientEntity(id: project.clientId);
|
||||||
return Column(
|
return ProjectListItem(
|
||||||
children: <Widget>[
|
|
||||||
ProjectListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
project: project,
|
project: project,
|
||||||
|
|
@ -140,11 +140,6 @@ class ProjectList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, project, client),
|
_showMenu(context, project, client),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/task/task_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/task/task_list_item.dart';
|
||||||
|
|
@ -121,17 +122,16 @@ class TaskList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.taskList.length,
|
itemCount: viewModel.taskList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final taskId = viewModel.taskList[index];
|
final taskId = viewModel.taskList[index];
|
||||||
final task = viewModel.taskMap[taskId];
|
final task = viewModel.taskMap[taskId];
|
||||||
final client = viewModel.clientMap[task.clientId] ??
|
final client = viewModel.clientMap[task.clientId] ??
|
||||||
ClientEntity();
|
ClientEntity();
|
||||||
return Column(
|
return TaskListItem(
|
||||||
children: <Widget>[
|
|
||||||
TaskListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
task: task,
|
task: task,
|
||||||
|
|
@ -151,11 +151,6 @@ class TaskList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, task, client),
|
_showMenu(context, task, client),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/vendor/vendor_list_item.dart';
|
import 'package:invoiceninja_flutter/ui/vendor/vendor_list_item.dart';
|
||||||
|
|
@ -53,14 +54,6 @@ class VendorList extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
/*
|
|
||||||
final localization = AppLocalization.of(context);
|
|
||||||
final listState = viewModel.listState;
|
|
||||||
final filteredClientId = listState.filterEntityId;
|
|
||||||
final filteredClient =
|
|
||||||
filteredClientId != null ? viewModel.clientMap[filteredClientId] : null;
|
|
||||||
*/
|
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|
@ -80,15 +73,14 @@ class VendorList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.vendorList.length,
|
itemCount: viewModel.vendorList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final vendorId = viewModel.vendorList[index];
|
final vendorId = viewModel.vendorList[index];
|
||||||
final vendor = viewModel.vendorMap[vendorId];
|
final vendor = viewModel.vendorMap[vendorId];
|
||||||
return Column(
|
return VendorListItem(
|
||||||
children: <Widget>[
|
|
||||||
VendorListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
vendor: vendor,
|
vendor: vendor,
|
||||||
|
|
@ -103,105 +95,11 @@ class VendorList extends StatelessWidget {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLongPress: () => _showMenu(context, vendor),
|
onLongPress: () => _showMenu(context, vendor),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
/*
|
|
||||||
filteredClient != null
|
|
||||||
? Material(
|
|
||||||
color: Colors.orangeAccent,
|
|
||||||
elevation: 6.0,
|
|
||||||
child: InkWell(
|
|
||||||
onTap: () => viewModel.onViewEntityFilterPressed(context),
|
|
||||||
child: Row(
|
|
||||||
children: <Widget>[
|
|
||||||
SizedBox(width: 18.0),
|
|
||||||
Expanded(
|
|
||||||
child: Text(
|
|
||||||
'${localization.filteredBy} ${filteredClient.listDisplayName}',
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 16.0,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(
|
|
||||||
Icons.close,
|
|
||||||
color: Colors.white,
|
|
||||||
),
|
|
||||||
onPressed: () => viewModel.onClearEntityFilterPressed(),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: Container(),
|
|
||||||
Expanded(
|
|
||||||
child: !viewModel.isLoaded
|
|
||||||
? LoadingIndicator()
|
|
||||||
: RefreshIndicator(
|
|
||||||
onRefresh: () => viewModel.onRefreshed(context),
|
|
||||||
child: viewModel.vendorList.isEmpty
|
|
||||||
? Opacity(
|
|
||||||
opacity: 0.5,
|
|
||||||
child: Center(
|
|
||||||
child: Text(
|
|
||||||
AppLocalization.of(context).noRecordsFound,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 18.0,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: ListView.builder(
|
|
||||||
shrinkWrap: true,
|
|
||||||
itemCount: viewModel.vendorList.length,
|
|
||||||
itemBuilder: (BuildContext context, index) {
|
|
||||||
final vendorId = viewModel.vendorList[index];
|
|
||||||
final vendor = viewModel.vendorMap[vendorId];
|
|
||||||
final client =
|
|
||||||
viewModel.clientMap[vendor.clientId] ??
|
|
||||||
ClientEntity();
|
|
||||||
return Column(
|
|
||||||
children: <Widget>[
|
|
||||||
VendorListItem(
|
|
||||||
user: viewModel.user,
|
|
||||||
filter: viewModel.filter,
|
|
||||||
vendor: vendor,
|
|
||||||
client:
|
|
||||||
viewModel.clientMap[vendor.clientId] ??
|
|
||||||
ClientEntity(),
|
|
||||||
onTap: () =>
|
|
||||||
viewModel.onVendorTap(context, vendor),
|
|
||||||
onEntityAction: (EntityAction action) {
|
|
||||||
if (action == EntityAction.more) {
|
|
||||||
_showMenu(context, vendor, client);
|
|
||||||
} else {
|
|
||||||
viewModel.onEntityAction(
|
|
||||||
context, vendor, action);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLongPress: () =>
|
|
||||||
_showMenu(context, vendor, client),
|
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),*/
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,15 +82,14 @@ class StubList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.stubList.length,
|
itemCount: viewModel.stubList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final stubId = viewModel.stubList[index];
|
final stubId = viewModel.stubList[index];
|
||||||
final stub = viewModel.stubMap[stubId];
|
final stub = viewModel.stubMap[stubId];
|
||||||
return Column(
|
return StubListItem(
|
||||||
children: <Widget>[
|
|
||||||
StubListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
stub: stub,
|
stub: stub,
|
||||||
|
|
@ -106,11 +105,6 @@ class StubList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, stub, null),
|
_showMenu(context, stub, null),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
@ -166,8 +160,9 @@ class StubList extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: ListView.builder(
|
: ListView.separated(
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemCount: viewModel.stubList.length,
|
itemCount: viewModel.stubList.length,
|
||||||
itemBuilder: (BuildContext context, index) {
|
itemBuilder: (BuildContext context, index) {
|
||||||
final stubId = viewModel.stubList[index];
|
final stubId = viewModel.stubList[index];
|
||||||
|
|
@ -175,9 +170,7 @@ class StubList extends StatelessWidget {
|
||||||
final client =
|
final client =
|
||||||
viewModel.clientMap[stub.clientId] ??
|
viewModel.clientMap[stub.clientId] ??
|
||||||
ClientEntity();
|
ClientEntity();
|
||||||
return Column(
|
return StubListItem(
|
||||||
children: <Widget>[
|
|
||||||
StubListItem(
|
|
||||||
user: viewModel.user,
|
user: viewModel.user,
|
||||||
filter: viewModel.filter,
|
filter: viewModel.filter,
|
||||||
stub: stub,
|
stub: stub,
|
||||||
|
|
@ -196,11 +189,6 @@ class StubList extends StatelessWidget {
|
||||||
},
|
},
|
||||||
onLongPress: () =>
|
onLongPress: () =>
|
||||||
_showMenu(context, stub, client),
|
_showMenu(context, stub, client),
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
height: 1.0,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue