diff --git a/lib/ui/app/actions_menu_button.dart b/lib/ui/app/actions_menu_button.dart index fae76f2c7..915d44886 100644 --- a/lib/ui/app/actions_menu_button.dart +++ b/lib/ui/app/actions_menu_button.dart @@ -17,17 +17,30 @@ class ActionMenuButton extends StatelessWidget { final BaseEntity entity; final List customActions; final Function(BuildContext, EntityAction) onSelected; + final bool isLoading; ActionMenuButton({ + @required this.entity, + @required this.onSelected, + @required this.isLoading, this.customActions, - this.entity, - this.onSelected, }); @override Widget build(BuildContext context) { List> actions = []; + if (isLoading) { + return IconButton( + onPressed: null, + icon: SizedBox( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation(Colors.white), + ), + ), + ); + } + customActions?.forEach((action) { if (action != null) { actions.add(PopupMenuItem( diff --git a/lib/ui/client/view/client_view.dart b/lib/ui/client/view/client_view.dart index 5195d0fb8..6def9f63b 100644 --- a/lib/ui/client/view/client_view.dart +++ b/lib/ui/client/view/client_view.dart @@ -42,11 +42,12 @@ class _ClientViewState extends State Widget build(BuildContext context) { var localization = AppLocalization.of(context); var store = StoreProvider.of(context); - var client = widget.viewModel.client; + var viewModel = widget.viewModel; + var client = viewModel.client; return Scaffold( appBar: AppBar( - title: Text(widget.viewModel.client.displayName ?? + title: Text(client.displayName ?? ''), // Text(localizations.clientDetails), bottom: TabBar( controller: _controller, @@ -60,26 +61,27 @@ class _ClientViewState extends State ), ], ), - actions: widget.viewModel.client.isNew() + actions: client.isNew() ? [] : [ IconButton( icon: Icon(Icons.edit), onPressed: () { - widget.viewModel.onEditPressed(context); + viewModel.onEditPressed(context); }, ), ActionMenuButton( - entity: widget.viewModel.client, - onSelected: widget.viewModel.onActionSelected, + isLoading: viewModel.isLoading, + entity: client, + onSelected: viewModel.onActionSelected, ) ], ), body: TabBarView( controller: _controller, children: [ - ClientOverview(client: widget.viewModel.client), - ClientViewDetails(client: widget.viewModel.client), + ClientOverview(client: client), + ClientViewDetails(client: client), ], ), floatingActionButton: FloatingActionButton( diff --git a/lib/ui/invoice/view/invoice_view.dart b/lib/ui/invoice/view/invoice_view.dart index 7b8eb07fa..371510d17 100644 --- a/lib/ui/invoice/view/invoice_view.dart +++ b/lib/ui/invoice/view/invoice_view.dart @@ -83,6 +83,7 @@ class _InvoiceViewState extends State label: AppLocalization.of(context).pdf, ), ], + isLoading: viewModel.isLoading, entity: invoice, onSelected: viewModel.onActionSelected, ) diff --git a/lib/ui/product/edit/product_edit.dart b/lib/ui/product/edit/product_edit.dart index 329335f19..50d62e4c9 100644 --- a/lib/ui/product/edit/product_edit.dart +++ b/lib/ui/product/edit/product_edit.dart @@ -99,6 +99,7 @@ class _ProductEditState extends State { viewModel.product.isNew() ? Container() : ActionMenuButton( + isLoading: viewModel.isLoading, entity: viewModel.product, onSelected: viewModel.onActionSelected, )