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/material.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/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/client_list_vm.dart';
|
||||
|
|
@ -77,9 +78,7 @@ class ClientList extends StatelessWidget {
|
|||
return RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (context, index) => Divider(
|
||||
height: 1,
|
||||
),
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.clientList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final clientId = viewModel.clientList[index];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.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/snackbar_row.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,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.expenseList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final expenseId = viewModel.expenseList[index];
|
||||
|
|
@ -123,30 +125,22 @@ class ExpenseList extends StatelessWidget {
|
|||
viewModel.state.clientState.map[expense.clientId];
|
||||
final vendor =
|
||||
viewModel.state.vendorState.map[expense.vendorId];
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
ExpenseListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
expense: expense,
|
||||
client: client,
|
||||
vendor: vendor,
|
||||
onTap: () =>
|
||||
viewModel.onExpenseTap(context, expense),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, expense);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, expense, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () => _showMenu(context, expense),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return ExpenseListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
expense: expense,
|
||||
client: client,
|
||||
vendor: vendor,
|
||||
onTap: () => viewModel.onExpenseTap(context, expense),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, expense);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, expense, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () => _showMenu(context, expense),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/invoice_model.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/snackbar_row.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,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.invoiceList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final invoiceId = viewModel.invoiceList[index];
|
||||
|
|
@ -120,32 +122,24 @@ class InvoiceList extends StatelessWidget {
|
|||
final client =
|
||||
viewModel.clientMap[invoice.clientId] ??
|
||||
ClientEntity();
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
InvoiceListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
invoice: invoice,
|
||||
client:
|
||||
viewModel.clientMap[invoice.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onInvoiceTap(context, invoice),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, invoice, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, invoice, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, invoice, client),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return InvoiceListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
invoice: invoice,
|
||||
client: viewModel.clientMap[invoice.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onInvoiceTap(context, invoice),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, invoice, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, invoice, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, invoice, client),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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/redux/app/app_state.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/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/payment/payment_list_item.dart';
|
||||
|
|
@ -128,37 +129,31 @@ class PaymentList extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.paymentList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final paymentId = viewModel.paymentList[index];
|
||||
final payment = state.paymentState.map[paymentId];
|
||||
final client =
|
||||
paymentClientSelector(paymentId, state);
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
PaymentListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
payment: payment,
|
||||
onTap: () =>
|
||||
viewModel.onPaymentTap(context, payment),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, payment, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, payment, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, payment, client),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return PaymentListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
payment: payment,
|
||||
onTap: () =>
|
||||
viewModel.onPaymentTap(context, payment),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, payment, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, payment, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, payment, client),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.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/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/product/product_list_item.dart';
|
||||
|
|
@ -74,30 +75,26 @@ class ProductList extends StatelessWidget {
|
|||
Widget _buildListView(BuildContext context) {
|
||||
return RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
child: ListView.builder(
|
||||
child: ListView.separated(
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.productList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final productId = viewModel.productList[index];
|
||||
final product = viewModel.productMap[productId];
|
||||
return Column(children: <Widget>[
|
||||
ProductListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
product: product,
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, product);
|
||||
} else {
|
||||
viewModel.onEntityAction(context, product, action);
|
||||
}
|
||||
},
|
||||
onTap: () => viewModel.onProductTap(context, product),
|
||||
onLongPress: () => _showMenu(context, product),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
]);
|
||||
return ProductListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
product: product,
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, product);
|
||||
} else {
|
||||
viewModel.onEntityAction(context, product, action);
|
||||
}
|
||||
},
|
||||
onTap: () => viewModel.onProductTap(context, product),
|
||||
onLongPress: () => _showMenu(context, product),
|
||||
);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.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/snackbar_row.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,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.projectList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final projectId = viewModel.projectList[index];
|
||||
|
|
@ -119,32 +121,25 @@ class ProjectList extends StatelessWidget {
|
|||
final client =
|
||||
viewModel.clientMap[project.clientId] ??
|
||||
ClientEntity(id: project.clientId);
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
ProjectListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
project: project,
|
||||
client:
|
||||
viewModel.clientMap[project.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onProjectTap(context, project),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, project, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, project, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, project, client),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return ProjectListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
project: project,
|
||||
client:
|
||||
viewModel.clientMap[project.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onProjectTap(context, project),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, project, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, project, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, project, client),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.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/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/task_list_item.dart';
|
||||
|
|
@ -121,41 +122,35 @@ class TaskList extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.taskList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final taskId = viewModel.taskList[index];
|
||||
final task = viewModel.taskMap[taskId];
|
||||
final client = viewModel.clientMap[task.clientId] ??
|
||||
ClientEntity();
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
TaskListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
task: task,
|
||||
client: viewModel.clientMap[task.clientId] ??
|
||||
ClientEntity(),
|
||||
project: viewModel
|
||||
.state.projectState.map[task.projectId],
|
||||
onTap: () =>
|
||||
viewModel.onTaskTap(context, task),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, task, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, task, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, task, client),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return TaskListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
task: task,
|
||||
client: viewModel.clientMap[task.clientId] ??
|
||||
ClientEntity(),
|
||||
project: viewModel
|
||||
.state.projectState.map[task.projectId],
|
||||
onTap: () =>
|
||||
viewModel.onTaskTap(context, task),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, task, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, task, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, task, client),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.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/snackbar_row.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/vendor_list_item.dart';
|
||||
|
|
@ -53,14 +54,6 @@ class VendorList extends StatelessWidget {
|
|||
|
||||
@override
|
||||
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(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
|
|
@ -80,128 +73,33 @@ class VendorList extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.vendorList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final vendorId = viewModel.vendorList[index];
|
||||
final vendor = viewModel.vendorMap[vendorId];
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
VendorListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
vendor: vendor,
|
||||
onTap: () =>
|
||||
viewModel.onVendorTap(context, vendor),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, vendor);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, vendor, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () => _showMenu(context, vendor),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
return VendorListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
vendor: vendor,
|
||||
onTap: () =>
|
||||
viewModel.onVendorTap(context, vendor),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, vendor);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, vendor, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () => _showMenu(context, vendor),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
/*
|
||||
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,36 +82,30 @@ class StubList extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.stubList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final stubId = viewModel.stubList[index];
|
||||
final stub = viewModel.stubMap[stubId];
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
StubListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
stub: stub,
|
||||
onTap: () =>
|
||||
viewModel.onStubTap(context, stub),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, stub, null);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, stub, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, stub, null),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
);
|
||||
return StubListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
stub: stub,
|
||||
onTap: () =>
|
||||
viewModel.onStubTap(context, stub),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, stub, null);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, stub, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, stub, null),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
|
@ -166,8 +160,9 @@ class StubList extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
)
|
||||
: ListView.builder(
|
||||
: ListView.separated(
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (context, index) => ListDivider(),
|
||||
itemCount: viewModel.stubList.length,
|
||||
itemBuilder: (BuildContext context, index) {
|
||||
final stubId = viewModel.stubList[index];
|
||||
|
|
@ -175,33 +170,26 @@ class StubList extends StatelessWidget {
|
|||
final client =
|
||||
viewModel.clientMap[stub.clientId] ??
|
||||
ClientEntity();
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
StubListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
stub: stub,
|
||||
client:
|
||||
viewModel.clientMap[stub.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onStubTap(context, stub),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, stub, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, stub, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, stub, client),
|
||||
),
|
||||
Divider(
|
||||
height: 1.0,
|
||||
),
|
||||
],
|
||||
);
|
||||
return StubListItem(
|
||||
user: viewModel.user,
|
||||
filter: viewModel.filter,
|
||||
stub: stub,
|
||||
client:
|
||||
viewModel.clientMap[stub.clientId] ??
|
||||
ClientEntity(),
|
||||
onTap: () =>
|
||||
viewModel.onStubTap(context, stub),
|
||||
onEntityAction: (EntityAction action) {
|
||||
if (action == EntityAction.more) {
|
||||
_showMenu(context, stub, client);
|
||||
} else {
|
||||
viewModel.onEntityAction(
|
||||
context, stub, action);
|
||||
}
|
||||
},
|
||||
onLongPress: () =>
|
||||
_showMenu(context, stub, client),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue