Implemented Long Press to activate multiselect from Menu Icon
This commit is contained in:
parent
b4e423b956
commit
fff9d942e0
|
|
@ -18,6 +18,7 @@ class AppScaffold extends StatelessWidget {
|
||||||
this.floatingActionButton,
|
this.floatingActionButton,
|
||||||
this.isChecked,
|
this.isChecked,
|
||||||
this.onCheckboxChanged,
|
this.onCheckboxChanged,
|
||||||
|
this.onHamburgerLongPress,
|
||||||
this.showCheckbox = false,
|
this.showCheckbox = false,
|
||||||
this.hideHamburgerButton = false});
|
this.hideHamburgerButton = false});
|
||||||
|
|
||||||
|
|
@ -29,6 +30,7 @@ class AppScaffold extends StatelessWidget {
|
||||||
final bool hideHamburgerButton;
|
final bool hideHamburgerButton;
|
||||||
final bool showCheckbox;
|
final bool showCheckbox;
|
||||||
final Function(bool) onCheckboxChanged;
|
final Function(bool) onCheckboxChanged;
|
||||||
|
final Function() onHamburgerLongPress;
|
||||||
final bool isChecked;
|
final bool isChecked;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -43,20 +45,30 @@ class AppScaffold extends StatelessWidget {
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
drawer: isMobile(context) ? AppDrawerBuilder() : null,
|
drawer: isMobile(context) ? AppDrawerBuilder() : null,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
automaticallyImplyLeading: isMobile(context),
|
automaticallyImplyLeading: false,
|
||||||
leading: showCheckbox
|
leading: showCheckbox
|
||||||
? Checkbox(
|
? Checkbox(
|
||||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
onChanged: onCheckboxChanged,
|
onChanged: onCheckboxChanged,
|
||||||
activeColor: Theme.of(context).accentColor,
|
activeColor: Theme.of(context).accentColor,
|
||||||
value: isChecked)
|
value: isChecked)
|
||||||
: hideHamburgerButton || isMobile(context)
|
: hideHamburgerButton
|
||||||
? null
|
? null
|
||||||
: IconButton(
|
: Builder(
|
||||||
icon: Icon(Icons.menu),
|
builder: (context) => GestureDetector(
|
||||||
onPressed: () =>
|
onLongPress: onHamburgerLongPress,
|
||||||
store.dispatch(UpdateSidebar(AppSidebar.menu)),
|
child: IconButton(
|
||||||
),
|
icon: Icon(Icons.menu),
|
||||||
|
onPressed: () {
|
||||||
|
if (isMobile(context)) {
|
||||||
|
Scaffold.of(context).openDrawer();
|
||||||
|
} else {
|
||||||
|
store.dispatch(
|
||||||
|
UpdateSidebar(AppSidebar.menu));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)),
|
||||||
title: appBarTitle,
|
title: appBarTitle,
|
||||||
actions: appBarActions,
|
actions: appBarActions,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ class ClientScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.clientList.length,
|
listUIState.selectedIds.length == viewModel.clientList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartClientMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final clients = viewModel.clientList
|
final clients = viewModel.clientList
|
||||||
.map<ClientEntity>((clientId) => viewModel.clientMap[clientId])
|
.map<ClientEntity>((clientId) => viewModel.clientMap[clientId])
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class CompanyGatewayScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.companyGatewayList.length,
|
listUIState.selectedIds.length == viewModel.companyGatewayList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartCompanyGatewayMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final companyGateways = viewModel.companyGatewayList
|
final companyGateways = viewModel.companyGatewayList
|
||||||
.map<CompanyGatewayEntity>((companyGatewayId) =>
|
.map<CompanyGatewayEntity>((companyGatewayId) =>
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class DocumentScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.documentList.length,
|
listUIState.selectedIds.length == viewModel.documentList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartDocumentMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final documents = viewModel.documentList
|
final documents = viewModel.documentList
|
||||||
.map<DocumentEntity>(
|
.map<DocumentEntity>(
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class ExpenseScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.expenseList.length,
|
listUIState.selectedIds.length == viewModel.expenseList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartExpenseMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final expenses = viewModel.expenseList
|
final expenses = viewModel.expenseList
|
||||||
.map<ExpenseEntity>((expenseId) => viewModel.expenseMap[expenseId])
|
.map<ExpenseEntity>((expenseId) => viewModel.expenseMap[expenseId])
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ class GroupSettingsScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.groupList.length,
|
listUIState.selectedIds.length == viewModel.groupList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartGroupMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final groups = viewModel.groupList
|
final groups = viewModel.groupList
|
||||||
.map<GroupEntity>((groupId) => viewModel.groupMap[groupId])
|
.map<GroupEntity>((groupId) => viewModel.groupMap[groupId])
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class InvoiceScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.invoiceList.length,
|
listUIState.selectedIds.length == viewModel.invoiceList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartInvoiceMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final invoices = viewModel.invoiceList
|
final invoices = viewModel.invoiceList
|
||||||
.map<InvoiceEntity>((invoiceId) => viewModel.invoiceMap[invoiceId])
|
.map<InvoiceEntity>((invoiceId) => viewModel.invoiceMap[invoiceId])
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@ class PaymentScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.paymentList.length,
|
listUIState.selectedIds.length == viewModel.paymentList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartPaymentMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final payments = viewModel.paymentList
|
final payments = viewModel.paymentList
|
||||||
.map<PaymentEntity>((paymentId) => viewModel.paymentMap[paymentId])
|
.map<PaymentEntity>((paymentId) => viewModel.paymentMap[paymentId])
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class ProductScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.productList.length,
|
listUIState.selectedIds.length == viewModel.productList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartProductMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final products = viewModel.productList
|
final products = viewModel.productList
|
||||||
.map<ProductEntity>((productId) => viewModel.productMap[productId])
|
.map<ProductEntity>((productId) => viewModel.productMap[productId])
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class ProjectScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.projectList.length,
|
listUIState.selectedIds.length == viewModel.projectList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartProjectMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final projects = viewModel.projectList
|
final projects = viewModel.projectList
|
||||||
.map<ProjectEntity>((projectId) => viewModel.projectMap[projectId])
|
.map<ProjectEntity>((projectId) => viewModel.projectMap[projectId])
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class QuoteScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.quoteList.length,
|
listUIState.selectedIds.length == viewModel.quoteList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartQuoteMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final quotes = viewModel.quoteList
|
final quotes = viewModel.quoteList
|
||||||
.map<InvoiceEntity>((quoteId) => viewModel.quoteMap[quoteId])
|
.map<InvoiceEntity>((quoteId) => viewModel.quoteMap[quoteId])
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ class TaskScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.taskList.length,
|
listUIState.selectedIds.length == viewModel.taskList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartTaskMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final tasks = viewModel.taskList
|
final tasks = viewModel.taskList
|
||||||
.map<TaskEntity>((taskId) => viewModel.taskMap[taskId])
|
.map<TaskEntity>((taskId) => viewModel.taskMap[taskId])
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class TaxRateSettingsScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.taxRateList.length,
|
listUIState.selectedIds.length == viewModel.taxRateList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartTaxRateMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final taxRates = viewModel.taxRateList
|
final taxRates = viewModel.taxRateList
|
||||||
.map<TaxRateEntity>((taxRateId) => viewModel.taxRateMap[taxRateId])
|
.map<TaxRateEntity>((taxRateId) => viewModel.taxRateMap[taxRateId])
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ class UserScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.userList.length,
|
listUIState.selectedIds.length == viewModel.userList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartUserMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
/*
|
/*
|
||||||
final users = viewModel.userList
|
final users = viewModel.userList
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class VendorScreen extends StatelessWidget {
|
||||||
isChecked: isInMultiselect &&
|
isChecked: isInMultiselect &&
|
||||||
listUIState.selectedIds.length == viewModel.vendorList.length,
|
listUIState.selectedIds.length == viewModel.vendorList.length,
|
||||||
showCheckbox: isInMultiselect,
|
showCheckbox: isInMultiselect,
|
||||||
|
onHamburgerLongPress: () =>
|
||||||
|
store.dispatch(StartVendorMultiselect(context: context)),
|
||||||
onCheckboxChanged: (value) {
|
onCheckboxChanged: (value) {
|
||||||
final vendors = viewModel.vendorList
|
final vendors = viewModel.vendorList
|
||||||
.map<VendorEntity>((vendorId) => viewModel.vendorMap[vendorId])
|
.map<VendorEntity>((vendorId) => viewModel.vendorMap[vendorId])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue