Handle tab changes

This commit is contained in:
Hillel Coren 2021-02-15 09:18:08 +02:00
parent d3f2a3bb58
commit 9d0ee048ca
17 changed files with 87 additions and 0 deletions

View File

@ -21,10 +21,12 @@ class ClientView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final ClientViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_ClientViewState createState() => _ClientViewState();
@ -51,6 +53,15 @@ class _ClientViewState extends State<ClientView>
store.dispatch(UpdateClientTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -36,6 +36,7 @@ class ClientViewScreen extends StatelessWidget {
return ClientView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.clientUIState.tabIndex,
);
},
);

View File

@ -36,6 +36,7 @@ class CreditViewScreen extends StatelessWidget {
return InvoiceView(
viewModel: viewModel,
isFilter: isFilter,
tabIndex: viewModel.state.creditUIState.tabIndex,
);
},
);

View File

@ -21,10 +21,12 @@ class ExpenseView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final ExpenseViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_ExpenseViewState createState() => _ExpenseViewState();
@ -51,6 +53,15 @@ class _ExpenseViewState extends State<ExpenseView>
store.dispatch(UpdateExpenseTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -37,6 +37,7 @@ class ExpenseViewScreen extends StatelessWidget {
return ExpenseView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.expenseCategoryUIState.tabIndex,
);
},
);

View File

@ -23,10 +23,12 @@ class InvoiceView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final EntityViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_InvoiceViewState createState() => new _InvoiceViewState();
@ -76,6 +78,15 @@ class _InvoiceViewState extends State<InvoiceView>
}
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -34,6 +34,7 @@ class InvoiceViewScreen extends StatelessWidget {
return InvoiceView(
viewModel: viewModel,
isFilter: isFilter,
tabIndex: viewModel.state.invoiceUIState.tabIndex,
);
},
);

View File

@ -17,10 +17,12 @@ class ProductView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final ProductViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_ProductViewState createState() => _ProductViewState();
@ -47,6 +49,15 @@ class _ProductViewState extends State<ProductView>
store.dispatch(UpdateProductTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -35,6 +35,7 @@ class ProductViewScreen extends StatelessWidget {
return ProductView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.productUIState.tabIndex,
);
},
);

View File

@ -17,10 +17,12 @@ class ProjectView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final ProjectViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_ProjectViewState createState() => new _ProjectViewState();
@ -47,6 +49,15 @@ class _ProjectViewState extends State<ProjectView>
store.dispatch(UpdateProjectTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -35,6 +35,7 @@ class ProjectViewScreen extends StatelessWidget {
return ProjectView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.projectUIState.tabIndex,
);
},
);

View File

@ -36,6 +36,7 @@ class QuoteViewScreen extends StatelessWidget {
return InvoiceView(
viewModel: viewModel,
isFilter: isFilter,
tabIndex: viewModel.state.quoteUIState.tabIndex,
);
},
);

View File

@ -35,6 +35,7 @@ class RecurringInvoiceViewScreen extends StatelessWidget {
return InvoiceView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.recurringInvoiceUIState.tabIndex,
);
},
);

View File

@ -17,10 +17,12 @@ class TaskView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final TaskViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_TaskViewState createState() => new _TaskViewState();
@ -45,6 +47,15 @@ class _TaskViewState extends State<TaskView>
store.dispatch(UpdateTaskTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -35,6 +35,7 @@ class TaskViewScreen extends StatelessWidget {
return TaskView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.taskUIState.tabIndex,
);
},
);

View File

@ -16,10 +16,12 @@ class VendorView extends StatefulWidget {
Key key,
@required this.viewModel,
@required this.isFilter,
@required this.tabIndex,
}) : super(key: key);
final VendorViewVM viewModel;
final bool isFilter;
final int tabIndex;
@override
_VendorViewState createState() => _VendorViewState();
@ -46,6 +48,15 @@ class _VendorViewState extends State<VendorView>
store.dispatch(UpdateVendorTab(tabIndex: _controller.index));
}
@override
void didUpdateWidget(oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.tabIndex != widget.tabIndex) {
_controller.index = widget.tabIndex ?? 0;
}
}
@override
void dispose() {
_controller.removeListener(_onTabChanged);

View File

@ -35,6 +35,7 @@ class VendorViewScreen extends StatelessWidget {
return VendorView(
viewModel: vm,
isFilter: isFilter,
tabIndex: vm.state.vendorUIState.tabIndex,
);
},
);