Add scrollbars
This commit is contained in:
parent
d44c2bf5e5
commit
67cd348a37
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/data/models/serializers.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:flutter_json_widget/flutter_json_widget.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/responsive_padding.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class StateInspector extends StatefulWidget {
|
||||
|
|
@ -48,8 +49,7 @@ class _StateInspectorState extends State<StateInspector> {
|
|||
padding: const EdgeInsets.all(15),
|
||||
child: Material(
|
||||
child: ResponsivePadding(
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
TextFormField(
|
||||
autofocus: true,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/data/web_client.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
import 'package:invoiceninja_flutter/utils/files.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -40,8 +41,7 @@ class DocumentGrid extends StatelessWidget {
|
|||
final localization = AppLocalization.of(context);
|
||||
final state = StoreProvider.of<AppState>(context).state;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: [
|
||||
if (state.isEnterprisePlan)
|
||||
Padding(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
|
||||
class AppForm extends StatelessWidget {
|
||||
const AppForm({
|
||||
|
|
@ -22,8 +23,7 @@ class AppForm extends StatelessWidget {
|
|||
child: Form(
|
||||
key: formKey,
|
||||
child: child ??
|
||||
ListView(
|
||||
shrinkWrap: true,
|
||||
ScrollableListView(
|
||||
children: children,
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,8 +1,16 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
class ScrollableListView extends StatefulWidget {
|
||||
const ScrollableListView({this.children});
|
||||
const ScrollableListView({
|
||||
Key key,
|
||||
@required this.children,
|
||||
this.scrollController,
|
||||
this.padding,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<Widget> children;
|
||||
final ScrollController scrollController;
|
||||
final EdgeInsetsGeometry padding;
|
||||
|
||||
@override
|
||||
_ScrollableListViewState createState() => _ScrollableListViewState();
|
||||
|
|
@ -31,11 +39,12 @@ class _ScrollableListViewState extends State<ScrollableListView> {
|
|||
onExit: (event) => setState(() => _isHovered = false),
|
||||
child: Scrollbar(
|
||||
child: ListView(
|
||||
padding: widget.padding,
|
||||
children: widget.children,
|
||||
controller: _scrollController,
|
||||
controller: widget.scrollController ?? _scrollController,
|
||||
shrinkWrap: true,
|
||||
),
|
||||
controller: _scrollController,
|
||||
controller: widget.scrollController ?? _scrollController,
|
||||
isAlwaysShown: _isHovered,
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:flutter_json_widget/flutter_json_widget.dart';
|
|||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/system_log_model.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
|
|
@ -25,8 +26,7 @@ class _SystemLogViewerState extends State<SystemLogViewer> {
|
|||
final localization = AppLocalization.of(context);
|
||||
final state = StoreProvider.of<AppState>(context).state;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: [
|
||||
ExpansionPanelList(
|
||||
expansionCallback: (int index, bool isExpanded) {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_toggle_buttons.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/password_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/link_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/auth/login_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/colors.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -280,8 +281,7 @@ class _LoginState extends State<LoginView> {
|
|||
),
|
||||
),
|
||||
),
|
||||
ListView(
|
||||
shrinkWrap: true,
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 20.0, bottom: 20.0),
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -88,7 +89,7 @@ class ClientEditBillingAddressState extends State<ClientEditBillingAddress> {
|
|||
final viewModel = widget.viewModel;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(shrinkWrap: true, children: <Widget>[
|
||||
return ScrollableListView(children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
DecoratedFormField(
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/responsive_padding.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_contacts_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -92,7 +93,7 @@ class _ClientEditContactsState extends State<ClientEditContacts> {
|
|||
});
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: []
|
||||
..addAll(contacts)
|
||||
..add(Padding(
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/dynamic_selector.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/contacts.dart';
|
||||
|
|
@ -125,8 +126,7 @@ class ClientEditDetailsState extends State<ClientEditDetails> {
|
|||
final state = viewModel.state;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -78,8 +79,7 @@ class ClientEditNotesState extends State<ClientEditNotes> {
|
|||
final state = viewModel.state;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.d
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -83,8 +84,7 @@ class ClientEditSettingsState extends State<ClientEditSettings> {
|
|||
final state = viewModel.state;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -89,7 +90,7 @@ class ClientEditShippingAddressState extends State<ClientEditShippingAddress> {
|
|||
final viewModel = widget.viewModel;
|
||||
final client = viewModel.client;
|
||||
|
||||
return ListView(shrinkWrap: true, children: <Widget>[
|
||||
return ScrollableListView(children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
DecoratedFormField(
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
|||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/app_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
|
@ -200,7 +201,7 @@ class _ClientViewDetailsState extends State<ClientViewDetails> {
|
|||
return listTiles;
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: _buildDetailsList(),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/gateways/token_meta.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/extensions.dart';
|
||||
|
|
@ -108,7 +109,7 @@ class ClientOverview extends StatelessWidget {
|
|||
value: client.customValue4);
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: client,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/company_gateway/edit/company_gateway_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -101,7 +102,7 @@ class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
|
|||
focusNode: _focusNode,
|
||||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -137,7 +138,7 @@ class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(children: <Widget>[
|
||||
if (companyGateway.gatewayId != kGatewayCustom)
|
||||
|
|
@ -295,7 +296,7 @@ class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
|
|||
)
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
if (gateway?.options != null && gateway.options.length > 1)
|
||||
FormCard(
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/system_log_viewer.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/company_gateway/view/company_gateway_view_vm.dart';
|
||||
|
|
@ -138,7 +139,7 @@ class _CompanyGatewayOverview extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
return ListView(children: <Widget>[
|
||||
return ScrollableListView(children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: companyGateway,
|
||||
label: localization.processed,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/responsive_padding.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
|
|
@ -50,8 +51,7 @@ class _DashboardDateRangePickerState extends State<DashboardDateRangePicker> {
|
|||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(24.0),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
Text(localization.dateRange,
|
||||
style: Theme.of(context).textTheme.headline6),
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
|||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/app_scrollbar.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_chart.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_date_range_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_vm.dart';
|
||||
|
|
@ -402,42 +403,39 @@ class DashboardPanels extends StatelessWidget {
|
|||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 74),
|
||||
child: AppScrollbar(
|
||||
controller: scrollController,
|
||||
child: ListView(
|
||||
controller: scrollController,
|
||||
children: <Widget>[
|
||||
if (company.isModuleEnabled(EntityType.invoice))
|
||||
_InvoiceChart(
|
||||
viewModel: viewModel,
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel
|
||||
.onSelectionChanged(EntityType.invoice, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.invoice))
|
||||
_paymentChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel
|
||||
.onSelectionChanged(EntityType.payment, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.quote))
|
||||
_quoteChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel
|
||||
.onSelectionChanged(EntityType.quote, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.task))
|
||||
_taskChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel
|
||||
.onSelectionChanged(EntityType.task, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.expense))
|
||||
_expenseChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel
|
||||
.onSelectionChanged(EntityType.expense, entityIds)),
|
||||
SizedBox(
|
||||
height: 500,
|
||||
)
|
||||
],
|
||||
),
|
||||
child: ScrollableListView(
|
||||
scrollController: scrollController,
|
||||
children: <Widget>[
|
||||
if (company.isModuleEnabled(EntityType.invoice))
|
||||
_InvoiceChart(
|
||||
viewModel: viewModel,
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel.onSelectionChanged(
|
||||
EntityType.invoice, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.invoice))
|
||||
_paymentChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel.onSelectionChanged(
|
||||
EntityType.payment, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.quote))
|
||||
_quoteChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel.onSelectionChanged(
|
||||
EntityType.quote, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.task))
|
||||
_taskChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel.onSelectionChanged(
|
||||
EntityType.task, entityIds)),
|
||||
if (company.isModuleEnabled(EntityType.expense))
|
||||
_expenseChart(
|
||||
context: context,
|
||||
onDateSelected: (entityIds) => viewModel.onSelectionChanged(
|
||||
EntityType.expense, entityIds)),
|
||||
SizedBox(
|
||||
height: 500,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
ConstrainedBox(
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/app_tab_bar.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/design_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/variables.dart';
|
||||
import 'package:invoiceninja_flutter/ui/design/edit/design_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/designs.dart';
|
||||
|
|
@ -383,8 +384,7 @@ class _DesignSettingsState extends State<DesignSettings> {
|
|||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/document/edit/document_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -92,8 +93,7 @@ class _DocumentEditState extends State<DocumentEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
key: ValueKey(viewModel.document.id),
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/project_picker.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -113,8 +114,7 @@ class ExpenseEditDetailsState extends State<ExpenseEditDetails> {
|
|||
onSavePressed: viewModel.onSavePressed,
|
||||
);
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -71,8 +72,7 @@ class ExpenseEditNotesState extends State<ExpenseEditNotes> {
|
|||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -108,8 +109,7 @@ class ExpenseEditSettingsState extends State<ExpenseEditSettings> {
|
|||
final company = viewModel.company;
|
||||
final expense = viewModel.expense;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense/view/expense_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -116,7 +117,7 @@ class ExpenseOverview extends StatelessWidget {
|
|||
return listTiles;
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
expense.isConverted
|
||||
? EntityHeader(
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense_category/edit/expense_category_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -95,7 +96,7 @@ class _ExpenseCategoryEditState extends State<ExpenseCategoryEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/redux/expense_category/expense_category_sel
|
|||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense_category/view/expense_category_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -38,7 +39,7 @@ class _ExpenseCategoryViewState extends State<ExpenseCategoryView> {
|
|||
isFilter: widget.isFilter,
|
||||
entity: expenseCategory,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: expenseCategory,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/group/edit/group_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -95,7 +96,7 @@ class _GroupEditState extends State<GroupEdit> {
|
|||
key: _formKey,
|
||||
child: Builder(
|
||||
builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/document_grid.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/group/view/group_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -75,8 +76,7 @@ class _GroupViewState extends State<GroupView>
|
|||
body: TabBarView(
|
||||
controller: _controller,
|
||||
children: [
|
||||
ListView(
|
||||
shrinkWrap: true,
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 16, bottom: 16, right: 16),
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/client_model.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/help_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
|
|
@ -39,8 +40,7 @@ class InvoiceEditContacts extends StatelessWidget {
|
|||
});
|
||||
}
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: contacts.map((contact) {
|
||||
final invitation = invoice.getInvitationForContact(contact);
|
||||
return _ContactListTile(
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/discount_field.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/credit/edit/credit_edit_items_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_details_vm.dart';
|
||||
|
|
@ -205,7 +206,7 @@ class InvoiceEditDesktopState extends State<InvoiceEditDesktop>
|
|||
companySettings: state.company.settings,
|
||||
);
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
key: ValueKey('__invoice_${invoice.id}__'),
|
||||
children: <Widget>[
|
||||
Row(
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/design_picker.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/discount_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -135,7 +136,7 @@ class InvoiceEditDetailsState extends State<InvoiceEditDetails> {
|
|||
final originalInvoice =
|
||||
state.getEntity(invoice.entityType, invoice.id) as InvoiceEntity;
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import 'package:invoiceninja_flutter/ui/app/app_scrollbar.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/help_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/invoice_item_view.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -29,19 +29,6 @@ class InvoiceEditItems extends StatefulWidget {
|
|||
|
||||
class _InvoiceEditItemsState extends State<InvoiceEditItems> {
|
||||
int selectedItemIndex;
|
||||
ScrollController _scrollController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_scrollController = ScrollController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_scrollController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void _showInvoiceItemEditor(int lineItemIndex, BuildContext context) {
|
||||
showDialog<ItemEditDetails>(
|
||||
|
|
@ -83,19 +70,15 @@ class _InvoiceEditItemsState extends State<InvoiceEditItems> {
|
|||
return HelpText(localization.clickPlusToAddItem);
|
||||
}
|
||||
|
||||
return AppScrollbar(
|
||||
controller: _scrollController,
|
||||
child: ListView(
|
||||
controller: _scrollController,
|
||||
children: [
|
||||
for (int i = 0; i < invoice.lineItems.length; i++)
|
||||
InvoiceItemListTile(
|
||||
invoice: invoice,
|
||||
invoiceItem: invoice.lineItems[i],
|
||||
onTap: () => _showInvoiceItemEditor(i, context),
|
||||
)
|
||||
],
|
||||
),
|
||||
return ScrollableListView(
|
||||
children: [
|
||||
for (int i = 0; i < invoice.lineItems.length; i++)
|
||||
InvoiceItemListTile(
|
||||
invoice: invoice,
|
||||
invoiceItem: invoice.lineItems[i],
|
||||
onTap: () => _showInvoiceItemEditor(i, context),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_notes_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -89,7 +90,7 @@ class InvoiceEditNotesState extends State<InvoiceEditNotes> {
|
|||
companySettings: state.company.settings,
|
||||
);
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
|||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -19,8 +20,7 @@ class InvoiceViewContacts extends StatelessWidget {
|
|||
Widget build(BuildContext context) {
|
||||
final invoice = viewModel.invoice;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
padding: const EdgeInsets.all(8),
|
||||
children: invoice.invitations
|
||||
.map((invitation) => _InvitationListTile(
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/invoice/invoice_item_view.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -414,7 +415,7 @@ class InvoiceOverview extends StatelessWidget {
|
|||
]);
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: widgets,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/view/invoice_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -14,8 +15,7 @@ class InvoiceViewSchedule extends StatelessWidget {
|
|||
final invoice = viewModel.invoice;
|
||||
final localization = AppLocalization.of(context);
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
padding: const EdgeInsets.all(16),
|
||||
children: [
|
||||
Row(
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import 'package:invoiceninja_flutter/redux/static/static_selectors.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/payment/edit/payment_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -326,7 +327,7 @@ class _PaymentEditState extends State<PaymentEdit> {
|
|||
: localization.editPayment,
|
||||
onCancelPressed: (context) => viewModel.onCancelPressed(context),
|
||||
onSavePressed: onSavePressed,
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: [body],
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/payment/view/payment_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -80,7 +81,7 @@ class _PaymentViewState extends State<PaymentView> {
|
|||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: payment,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/payment_term/edit/payment_term_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -95,7 +96,7 @@ class _PaymentTermEditState extends State<PaymentTermEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/payment_term/view/payment_term_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -27,13 +28,15 @@ class _PaymentTermViewState extends State<PaymentTermView> {
|
|||
return ViewScaffold(
|
||||
entity: paymentTerm,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
body: ListView(children: [
|
||||
EntityHeader(
|
||||
entity: paymentTerm,
|
||||
label: localization.name,
|
||||
value: paymentTerm.name,
|
||||
),
|
||||
]),
|
||||
body: ScrollableListView(
|
||||
children: [
|
||||
EntityHeader(
|
||||
entity: paymentTerm,
|
||||
label: localization.name,
|
||||
value: paymentTerm.name,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
|
@ -139,7 +140,7 @@ class _ProductEditState extends State<ProductEdit> {
|
|||
body: AppForm(
|
||||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
key: ValueKey(widget.viewModel.product.id),
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/product/view/product_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -62,7 +63,7 @@ class _ProductOverviewState extends State<ProductOverview> {
|
|||
value: product.customValue2);
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: product,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/project/edit/project_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -142,7 +143,7 @@ class _ProjectEditState extends State<ProjectEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
key: ValueKey(viewModel.project.id),
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/project/view/project_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -134,7 +135,7 @@ class _ProjectOverviewState extends State<ProjectOverview> {
|
|||
|
||||
return RefreshIndicator(
|
||||
onRefresh: () => widget.viewModel.onRefreshed(context),
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: _buildView(),
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/history_drawer_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/reports/report_charts.dart';
|
||||
import 'package:invoiceninja_flutter/ui/reports/reports_screen_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dates.dart';
|
||||
|
|
@ -247,7 +248,7 @@ class ReportsScreen extends StatelessWidget {
|
|||
),
|
||||
],
|
||||
),
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
key: ValueKey(
|
||||
'${viewModel.state.company.id}_${viewModel.state.isSaving}_${reportsState.report}_${reportsState.group}'),
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/account_management_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -99,7 +100,7 @@ class _AccountManagementState extends State<AccountManagement>
|
|||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
_AccountOverview(viewModel: viewModel),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
// TODO change to kModules.keys
|
||||
|
|
@ -123,7 +124,7 @@ class _AccountManagementState extends State<AccountManagement>
|
|||
}).toList()),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: [
|
||||
FormCard(
|
||||
children: [
|
||||
|
|
@ -197,8 +198,7 @@ class _AccountOverview extends StatelessWidget {
|
|||
final company = viewModel.company;
|
||||
final companies = state.companies;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
AppHeader(
|
||||
label: localization.plan,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/buy_now_buttons_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
|
@ -76,7 +77,7 @@ class _BuyNowButtonsState extends State<BuyNowButtons> {
|
|||
),
|
||||
body: Form(
|
||||
key: _formKey,
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/client_portal_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -205,7 +206,7 @@ class _ClientPortalState extends State<ClientPortal>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
/*
|
||||
if (!state.settingsUIState.isFiltered)
|
||||
|
|
@ -361,7 +362,7 @@ class _ClientPortalState extends State<ClientPortal>
|
|||
)
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -425,7 +426,7 @@ class _ClientPortalState extends State<ClientPortal>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -453,7 +454,7 @@ class _ClientPortalState extends State<ClientPortal>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/company_details_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -239,7 +240,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
|
|||
formKey: _formKey,
|
||||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -339,7 +340,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
|
|||
],
|
||||
),
|
||||
AutofillGroup(
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -397,8 +398,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
|
|||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
Builder(
|
||||
builder: (context) {
|
||||
|
|
@ -452,7 +452,7 @@ class _CompanyDetailsState extends State<CompanyDetails>
|
|||
],
|
||||
),
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/custom_fields_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -97,7 +98,7 @@ class _CustomFieldsState extends State<CustomFields>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
|
|
@ -105,7 +106,7 @@ class _CustomFieldsState extends State<CustomFields>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(children: <Widget>[
|
||||
ScrollableListView(children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
fieldType: CustomFieldType.client,
|
||||
|
|
@ -115,7 +116,7 @@ class _CustomFieldsState extends State<CustomFields>
|
|||
fieldType: CustomFieldType.contact,
|
||||
),
|
||||
]),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
|
|
@ -123,7 +124,7 @@ class _CustomFieldsState extends State<CustomFields>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(children: <Widget>[
|
||||
ScrollableListView(children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
fieldType: CustomFieldType.invoice,
|
||||
|
|
@ -134,13 +135,13 @@ class _CustomFieldsState extends State<CustomFields>
|
|||
showChargeTaxes: true,
|
||||
),
|
||||
]),
|
||||
ListView(children: <Widget>[
|
||||
ScrollableListView(children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
fieldType: CustomFieldType.payment,
|
||||
),
|
||||
]),
|
||||
ListView(children: <Widget>[
|
||||
ScrollableListView(children: <Widget>[
|
||||
CustomFieldsSettings(
|
||||
viewModel: viewModel,
|
||||
fieldType: CustomFieldType.user,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/device_settings_list_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
|
@ -42,7 +43,7 @@ class _DeviceSettingsState extends State<DeviceSettings> {
|
|||
),
|
||||
body: Form(
|
||||
key: _formKey,
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/generated_numbers_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -231,7 +232,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -487,7 +488,7 @@ class _EntityNumberSettingsState extends State<EntityNumberSettings> {
|
|||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: [
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import 'package:flutter_redux/flutter_redux.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/import_export_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
import 'package:invoiceninja_flutter/utils/files.dart';
|
||||
|
|
@ -69,7 +70,7 @@ class _ImportExportState extends State<ImportExport> {
|
|||
body: AppForm(
|
||||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: [
|
||||
if (_response == null)
|
||||
_FileImport(
|
||||
|
|
@ -399,10 +400,12 @@ class __FileMapperState extends State<_FileMapper> {
|
|||
final state = StoreProvider.of<AppState>(context).state;
|
||||
final credentials = state.credentials;
|
||||
final url = '${credentials.url}/import';
|
||||
final convertedMapping=<String,ImportRequestMapping>{};
|
||||
final convertedMapping = <String, ImportRequestMapping>{};
|
||||
|
||||
for(MapEntry<String,Map<int,String>> e in _mapping.entries){
|
||||
convertedMapping[e.key] = new ImportRequestMapping(BuiltMap(e.value));
|
||||
for (MapEntry<String, Map<int, String>> e
|
||||
in _mapping.entries) {
|
||||
convertedMapping[e.key] =
|
||||
new ImportRequestMapping(BuiltMap(e.value));
|
||||
}
|
||||
|
||||
setState(() => _isLoading = true);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/learn_more.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/integrations_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -80,7 +81,7 @@ class _IntegrationSettingsState extends State<IntegrationSettings> {
|
|||
return EditScaffold(
|
||||
title: localization.integrations,
|
||||
onSavePressed: widget.viewModel.onSavePressed,
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/design_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/learn_more.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/invoice_design_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/fonts.dart';
|
||||
|
|
@ -108,7 +109,7 @@ class _InvoiceDesignState extends State<InvoiceDesign>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 16, bottom: 10, left: 16),
|
||||
|
|
@ -229,7 +230,7 @@ class _InvoiceDesignState extends State<InvoiceDesign>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
padding: const EdgeInsets.all(10),
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/learn_more.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/localization_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
|
|
@ -128,7 +129,7 @@ class _LocalizationSettingsState extends State<LocalizationSettings>
|
|||
focusNode: _focusNode,
|
||||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: [
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -249,7 +250,7 @@ class _LocalizationSettingsState extends State<LocalizationSettings>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: [
|
||||
FormCard(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/app_scrollbar.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_filter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/selected_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/settings_list_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/icons.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -50,7 +51,7 @@ class _SettingsListState extends State<SettingsList> {
|
|||
}
|
||||
|
||||
if (!state.userCompany.isAdmin)
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
SettingsListTile(
|
||||
section: kSettingsUserDetails,
|
||||
|
|
@ -68,144 +69,142 @@ class _SettingsListState extends State<SettingsList> {
|
|||
filter: settingsUIState.filter,
|
||||
);
|
||||
|
||||
return AppScrollbar(
|
||||
controller: _scrollController,
|
||||
child: ListView(
|
||||
controller: _scrollController,
|
||||
children: <Widget>[
|
||||
if (settingsUIState.isFiltered)
|
||||
Container(
|
||||
color: Colors.orangeAccent,
|
||||
child: ListFilterMessage(
|
||||
filterEntityType: settingsUIState.entityType,
|
||||
filterEntityId: settingsUIState.entityType == EntityType.group
|
||||
? settingsUIState.group.id
|
||||
: settingsUIState.client.id,
|
||||
onPressed: settingsUIState.entityType == EntityType.client
|
||||
? widget.viewModel.onViewClientPressed
|
||||
: widget.viewModel.onViewGroupPressed,
|
||||
onClearPressed: widget.viewModel.onClearSettingsFilterPressed,
|
||||
isSettings: true,
|
||||
),
|
||||
),
|
||||
return ScrollableListView(
|
||||
scrollController: _scrollController,
|
||||
children: <Widget>[
|
||||
if (settingsUIState.isFiltered)
|
||||
Container(
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: const EdgeInsets.only(left: 19, top: 16, bottom: 16),
|
||||
child: Text(
|
||||
localization.basicSettings,
|
||||
style: Theme.of(context).textTheme.bodyText2,
|
||||
color: Colors.orangeAccent,
|
||||
child: ListFilterMessage(
|
||||
filterEntityType: settingsUIState.entityType,
|
||||
filterEntityId: settingsUIState.entityType == EntityType.group
|
||||
? settingsUIState.group.id
|
||||
: settingsUIState.client.id,
|
||||
onPressed: settingsUIState.entityType == EntityType.client
|
||||
? widget.viewModel.onViewClientPressed
|
||||
: widget.viewModel.onViewGroupPressed,
|
||||
onClearPressed: widget.viewModel.onClearSettingsFilterPressed,
|
||||
isSettings: true,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: const EdgeInsets.only(left: 19, top: 16, bottom: 16),
|
||||
child: Text(
|
||||
localization.basicSettings,
|
||||
style: Theme.of(context).textTheme.bodyText2,
|
||||
),
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsCompanyDetails,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsCompanyDetails,
|
||||
section: kSettingsUserDetails,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsUserDetails,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsLocalization,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsOnlinePayments,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsLocalization,
|
||||
section: kSettingsTaxSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsOnlinePayments,
|
||||
section: kSettingsProducts,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsTaxSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsProducts,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (state.company.isModuleEnabled(EntityType.task))
|
||||
SettingsListTile(
|
||||
section: kSettingsTasks,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll && state.company.isModuleEnabled(EntityType.expense))
|
||||
SettingsListTile(
|
||||
section: kSettingsExpenses,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
// TODO Re-entable
|
||||
/*
|
||||
if (state.company.isModuleEnabled(EntityType.task))
|
||||
SettingsListTile(
|
||||
section: kSettingsTasks,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll && state.company.isModuleEnabled(EntityType.expense))
|
||||
SettingsListTile(
|
||||
section: kSettingsExpenses,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
// TODO Re-entable
|
||||
/*
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsIntegrations,
|
||||
viewModel: viewModel,
|
||||
),
|
||||
*/
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsImportExport,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsDeviceSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll && state.userCompany.isOwner)
|
||||
SettingsListTile(
|
||||
section: kSettingsAccountManagement,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
Container(
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: const EdgeInsets.only(left: 19, top: 16, bottom: 16),
|
||||
child: Text(
|
||||
localization.advancedSettings,
|
||||
style: Theme.of(context).textTheme.bodyText2,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsImportExport,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsDeviceSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll && state.userCompany.isOwner)
|
||||
SettingsListTile(
|
||||
section: kSettingsAccountManagement,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
Container(
|
||||
color: Theme.of(context).backgroundColor,
|
||||
padding: const EdgeInsets.only(left: 19, top: 16, bottom: 16),
|
||||
child: Text(
|
||||
localization.advancedSettings,
|
||||
style: Theme.of(context).textTheme.bodyText2,
|
||||
),
|
||||
),
|
||||
|
||||
SettingsListTile(
|
||||
section: kSettingsInvoiceDesign,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsInvoiceDesign,
|
||||
section: kSettingsCustomFields,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsCustomFields,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsGeneratedNumbers,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsEmailSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsClientPortal,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsTemplatesAndReminders,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsGroupSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsWorkflowSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
/*
|
||||
SettingsListTile(
|
||||
section: kSettingsGeneratedNumbers,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsEmailSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsClientPortal,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsTemplatesAndReminders,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsGroupSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
SettingsListTile(
|
||||
section: kSettingsWorkflowSettings,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
/*
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsBuyNowButtons,
|
||||
viewModel: viewModel,
|
||||
),
|
||||
*/
|
||||
/*
|
||||
/*
|
||||
SettingsListTile(
|
||||
section: kSettingsCreditCardsAndBanks,
|
||||
viewModel: viewModel,
|
||||
|
|
@ -215,13 +214,12 @@ class _SettingsListState extends State<SettingsList> {
|
|||
viewModel: viewModel,
|
||||
),
|
||||
*/
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsUserManagement,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
],
|
||||
),
|
||||
if (showAll)
|
||||
SettingsListTile(
|
||||
section: kSettingsUserManagement,
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -507,7 +505,7 @@ class SettingsSearch extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final localization = AppLocalization.of(context);
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
for (var section in map.keys)
|
||||
for (int i = 0; i < map[section].length; i++)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/variables.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/templates_and_reminders_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -245,7 +246,7 @@ class _TemplatesAndRemindersState extends State<TemplatesAndReminders>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(children: <Widget>[
|
||||
AppDropdownButton<EmailTemplate>(
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/notification_settings.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/password_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/user_details_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
|
|
@ -155,7 +156,7 @@ class _UserDetailsState extends State<UserDetails>
|
|||
formKey: _formKey,
|
||||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(children: <Widget>[
|
||||
DecoratedFormField(
|
||||
|
|
@ -270,7 +271,7 @@ class _UserDetailsState extends State<UserDetails>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
NotificationSettings(
|
||||
user: user,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/workflow_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/icons.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -86,7 +87,7 @@ class _WorkflowSettingsState extends State<WorkflowSettings>
|
|||
formKey: _formKey,
|
||||
focusNode: _focusNode,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(children: <Widget>[
|
||||
BoolDropdownButton(
|
||||
|
|
@ -129,7 +130,7 @@ class _WorkflowSettingsState extends State<WorkflowSettings>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/dynamic_selector.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/project_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/time_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_items_desktop.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -134,7 +135,7 @@ class _TaskEditDesktopState extends State<TaskEditDesktop> {
|
|||
? client.currencyId
|
||||
: company.currencyId);
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/dynamic_selector.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/project_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -118,7 +119,7 @@ class _TaskEditDetailsState extends State<TaskEditDetails> {
|
|||
? client.currencyId
|
||||
: company.currencyId);
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/duration_picker.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/time_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/help_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/responsive_padding.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_times_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/task_time_view.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -74,7 +75,7 @@ class _TaskEditTimesState extends State<TaskEditTimes> {
|
|||
onTap: (context) => _showTaskTimeEditor(taskTime, context),
|
||||
));
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: taskTimeWidgets.toList(),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/task_time_view.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task/view/task_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -181,7 +182,7 @@ class _TaskOverviewState extends State<TaskOverview> {
|
|||
|
||||
return RefreshIndicator(
|
||||
onRefresh: () => viewModel.onRefreshed(context),
|
||||
child: ListView(
|
||||
child: ScrollableListView(
|
||||
children: _buildView(),
|
||||
),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task_status/edit/task_status_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -93,7 +94,7 @@ class _TaskStatusEditState extends State<TaskStatusEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/redux/task_status/task_status_selectors.dar
|
|||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/task_status/view/task_status_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -38,7 +39,7 @@ class _TaskStatusViewState extends State<TaskStatusView> {
|
|||
isFilter: widget.isFilter,
|
||||
entity: taskStatus,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: taskStatus,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/tax_rate/view/tax_rate_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -31,7 +32,7 @@ class _TaxRateViewState extends State<TaxRateView> {
|
|||
isFilter: widget.isFilter,
|
||||
entity: taxRate,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
body: ListView(children: [
|
||||
body: ScrollableListView(children: [
|
||||
EntityHeader(
|
||||
entity: taxRate,
|
||||
label: localization.name,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/token/edit/token_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -90,7 +91,7 @@ class _TokenEditState extends State<TokenEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/data/models/token_model.dart';
|
|||
import 'package:invoiceninja_flutter/redux/token/token_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/token/view/token_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -36,7 +37,7 @@ class _TokenViewState extends State<TokenView> {
|
|||
isFilter: widget.isFilter,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
entity: token,
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: token,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/notification_settings.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/user/edit/user_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -179,7 +180,7 @@ class _UserEditState extends State<UserEdit>
|
|||
formKey: _formKey,
|
||||
tabController: _controller,
|
||||
children: <Widget>[
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
@ -245,7 +246,7 @@ class _UserEditState extends State<UserEdit>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
NotificationSettings(
|
||||
user: user,
|
||||
|
|
@ -256,7 +257,7 @@ class _UserEditState extends State<UserEdit>
|
|||
),
|
||||
],
|
||||
),
|
||||
ListView(
|
||||
ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/user/view/user_view_vm.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -39,8 +40,7 @@ class UserView extends StatelessWidget {
|
|||
isFilter: isFilter,
|
||||
entity: user,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
body: ListView(
|
||||
shrinkWrap: true,
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
if (user.emailVerifiedAt == null)
|
||||
IconMessage(localization.emailSentToConfirmEmail,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:invoiceninja_flutter/data/models/entities.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -86,7 +87,7 @@ class VendorEditAddressState extends State<VendorEditAddress> {
|
|||
final viewModel = widget.viewModel;
|
||||
final vendor = viewModel.vendor;
|
||||
|
||||
return ListView(shrinkWrap: true, children: <Widget>[
|
||||
return ScrollableListView(children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
DecoratedFormField(
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_contacts_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/contacts.dart';
|
||||
|
|
@ -85,7 +86,7 @@ class _VendorEditContactsState extends State<VendorEditContacts> {
|
|||
});
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: []
|
||||
..addAll(contacts)
|
||||
..add(Padding(
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/user_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/contacts.dart';
|
||||
|
|
@ -122,8 +123,7 @@ class VendorEditDetailsState extends State<VendorEditDetails> {
|
|||
final viewModel = widget.viewModel;
|
||||
final vendor = viewModel.vendor;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -77,8 +78,7 @@ class VendorEditNotesState extends State<VendorEditNotes> {
|
|||
final staticState = viewModel.state.staticState;
|
||||
final vendor = viewModel.vendor;
|
||||
|
||||
return ListView(
|
||||
shrinkWrap: true,
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'dart:async';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/app_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
|
@ -149,7 +150,7 @@ class _VendorViewDetailsState extends State<VendorViewDetails> {
|
|||
return listTiles;
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: _buildDetailsList(),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/vendor/view/vendor_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
|
@ -56,7 +57,7 @@ class VendorOverview extends StatelessWidget {
|
|||
value: vendor.customValue2);
|
||||
}
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: vendor,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/webhook/edit/webhook_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
|
|
@ -93,7 +94,7 @@ class _WebhookEditState extends State<WebhookEdit> {
|
|||
body: Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/redux/webhook/webhook_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||
import 'package:invoiceninja_flutter/ui/webhook/view/webhook_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
|
@ -34,7 +35,7 @@ class _WebhookViewState extends State<WebhookView> {
|
|||
isFilter: widget.isFilter,
|
||||
onBackPressed: () => viewModel.onBackPressed(),
|
||||
entity: webhook,
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
EntityHeader(
|
||||
entity: webhook,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// https://hillelcoren.com/2018/06/12/flutter-complex-forms-with-multiple-tabs-and-relationships/
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
||||
// Sample entity classes
|
||||
|
|
@ -229,7 +230,7 @@ class ContactsPageState extends State<ContactsPage>
|
|||
),
|
||||
));
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: items,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:redux_logging/redux_logging.dart';
|
||||
|
|
@ -251,7 +252,7 @@ class ContactsPage extends StatelessWidget {
|
|||
//key: Key('__contact_${contact.id}__'),
|
||||
index: store.state.client.contacts.indexOf(contact)));
|
||||
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: []
|
||||
..addAll(contacts)
|
||||
..add(Padding(
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ class _StubEditState extends State<StubEdit> {
|
|||
body:Form(
|
||||
key: _formKey,
|
||||
child: Builder(builder: (BuildContext context) {
|
||||
return ListView(
|
||||
return ScrollableListView(
|
||||
children: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class _StubViewState extends State<StubView> {
|
|||
return ViewScaffold(
|
||||
isFilter: widget.isFilter,
|
||||
entity: stub,
|
||||
body: ListView(
|
||||
body: ScrollableListView(
|
||||
children: <Widget>[
|
||||
],
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue