diff --git a/lib/redux/ui/pref_state.dart b/lib/redux/ui/pref_state.dart index 3736aa1d8..9e51bd760 100644 --- a/lib/redux/ui/pref_state.dart +++ b/lib/redux/ui/pref_state.dart @@ -59,6 +59,8 @@ abstract class PrefState implements Built { bool get isDesktop => appLayout == AppLayout.desktop; + bool get isNotDesktop => !isDesktop; + bool get isTablet => appLayout == AppLayout.tablet; bool get isMobile => appLayout == AppLayout.mobile; diff --git a/lib/ui/invoice/edit/invoice_edit.dart b/lib/ui/invoice/edit/invoice_edit.dart index e12aa034e..f77015c77 100644 --- a/lib/ui/invoice/edit/invoice_edit.dart +++ b/lib/ui/invoice/edit/invoice_edit.dart @@ -65,6 +65,7 @@ class _InvoiceEditState extends State final localization = AppLocalization.of(context); final viewModel = widget.viewModel; final invoice = viewModel.invoice; + final state = viewModel.state; return WillPopScope( onWillPop: () async { @@ -100,38 +101,54 @@ class _InvoiceEditState extends State }, ) ], - bottom: TabBar( - controller: _controller, - //isScrollable: true, - tabs: [ - Tab( - text: localization.details, - ), - Tab( - text: localization.contacts, - ), - Tab( - text: localization.items, - ), - Tab( - text: localization.notes, - ), - ], - ), - ), - body: Form( - key: widget.formKey, - child: TabBarView( - key: ValueKey('__invoice_${viewModel.invoice.id}__'), - controller: _controller, - children: [ - InvoiceEditDetailsScreen(), - InvoiceEditContactsScreen(), - InvoiceEditItemsScreen(), - InvoiceEditNotesScreen(), - ], - ), + bottom: state.prefState.isDesktop + ? null + : TabBar( + controller: _controller, + //isScrollable: true, + tabs: [ + Tab( + text: localization.details, + ), + Tab( + text: localization.contacts, + ), + Tab( + text: localization.items, + ), + Tab( + text: localization.notes, + ), + ], + ), ), + body: state.prefState.isDesktop + ? ListView( + children: [ + Row( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded(child: InvoiceEditDetailsScreen()), + Expanded(child: InvoiceEditContactsScreen()), + ], + ), + + ], + ) + : Form( + key: widget.formKey, + child: TabBarView( + key: ValueKey('__invoice_${viewModel.invoice.id}__'), + controller: _controller, + children: [ + InvoiceEditDetailsScreen(), + InvoiceEditContactsScreen(), + InvoiceEditItemsScreen(), + InvoiceEditNotesScreen(), + ], + ), + ), bottomNavigationBar: BottomAppBar( color: Theme.of(context).primaryColor, shape: CircularNotchedRectangle(), diff --git a/lib/ui/invoice/edit/invoice_edit_contacts.dart b/lib/ui/invoice/edit/invoice_edit_contacts.dart index 47fb7840b..dd7d3970d 100644 --- a/lib/ui/invoice/edit/invoice_edit_contacts.dart +++ b/lib/ui/invoice/edit/invoice_edit_contacts.dart @@ -35,6 +35,7 @@ class InvoiceEditContacts extends StatelessWidget { }); return ListView( + shrinkWrap: true, children: contacts.map((contact) { final invitation = invoice.getInvitationForContact(contact); return _ContactListTile( diff --git a/lib/ui/invoice/edit/invoice_edit_details.dart b/lib/ui/invoice/edit/invoice_edit_details.dart index a181cc67b..6955b8986 100644 --- a/lib/ui/invoice/edit/invoice_edit_details.dart +++ b/lib/ui/invoice/edit/invoice_edit_details.dart @@ -134,6 +134,7 @@ class InvoiceEditDetailsState extends State { } return ListView( + shrinkWrap: true, children: [ FormCard( children: [