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