diff --git a/lib/ui/expense/edit/expense_edit.dart b/lib/ui/expense/edit/expense_edit.dart index 33048ad7e..7d4d0165c 100644 --- a/lib/ui/expense/edit/expense_edit.dart +++ b/lib/ui/expense/edit/expense_edit.dart @@ -1,7 +1,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_details.dart'; +import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_documents.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_notes.dart'; +import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_settings.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; @@ -48,8 +50,9 @@ class _ExpenseEditState extends State }, child: Scaffold( appBar: AppBar( - title: Text( - expense.isNew ? localization.newExpense : localization.editExpense), + title: Text(expense.isNew + ? localization.newExpense + : localization.editExpense), actions: [ ActionIconButton( icon: Icons.cloud_upload, @@ -72,9 +75,15 @@ class _ExpenseEditState extends State Tab( text: localization.details, ), + Tab( + text: localization.settings, + ), Tab( text: localization.notes, ), + Tab( + text: localization.documents, + ), ], ), ), @@ -86,9 +95,15 @@ class _ExpenseEditState extends State ExpenseEditDetails( viewModel: widget.viewModel, ), + ExpenseEditSettings( + viewModel: widget.viewModel, + ), ExpenseEditNotes( viewModel: widget.viewModel, ), + ExpenseEditDocuments( + viewModel: widget.viewModel, + ), ], ), ), diff --git a/lib/ui/expense/edit/expense_edit_documents.dart b/lib/ui/expense/edit/expense_edit_documents.dart new file mode 100644 index 000000000..5d5108bfd --- /dev/null +++ b/lib/ui/expense/edit/expense_edit_documents.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; +import 'package:invoiceninja_flutter/utils/localization.dart'; +import 'package:invoiceninja_flutter/ui/app/form_card.dart'; + +class ExpenseEditDocuments extends StatefulWidget { + const ExpenseEditDocuments({ + Key key, + @required this.viewModel, + }) : super(key: key); + + final ExpenseEditVM viewModel; + + @override + ExpenseEditDocumentsState createState() => ExpenseEditDocumentsState(); +} + +class ExpenseEditDocumentsState extends State { + final List _controllers = []; + + @override + void didChangeDependencies() { + final List _controllers = [ + ]; + + _controllers + .forEach((dynamic controller) => controller.removeListener(_onChanged)); + + final expense = widget.viewModel.expense; + + _controllers + .forEach((dynamic controller) => controller.addListener(_onChanged)); + + super.didChangeDependencies(); + } + + @override + void dispose() { + _controllers.forEach((dynamic controller) { + controller.removeListener(_onChanged); + controller.dispose(); + }); + + super.dispose(); + } + + void _onChanged() { + final viewModel = widget.viewModel; + final expense = viewModel.expense.rebuild((b) => b); + if (expense != viewModel.expense) { + viewModel.onChanged(expense); + } + } + + @override + Widget build(BuildContext context) { + //final localization = AppLocalization.of(context); + final viewModel = widget.viewModel; + + return ListView( + shrinkWrap: true, + children: [ + FormCard( + children: [ + ], + ), + ], + ); + } +} diff --git a/lib/ui/expense/edit/expense_edit_settings.dart b/lib/ui/expense/edit/expense_edit_settings.dart new file mode 100644 index 000000000..f79a51cb1 --- /dev/null +++ b/lib/ui/expense/edit/expense_edit_settings.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; +import 'package:invoiceninja_flutter/utils/localization.dart'; +import 'package:invoiceninja_flutter/ui/app/form_card.dart'; + +class ExpenseEditSettings extends StatefulWidget { + const ExpenseEditSettings({ + Key key, + @required this.viewModel, + }) : super(key: key); + + final ExpenseEditVM viewModel; + + @override + ExpenseEditSettingsState createState() => ExpenseEditSettingsState(); +} + +class ExpenseEditSettingsState extends State { + final List _controllers = []; + + @override + void didChangeDependencies() { + final List _controllers = [ + ]; + + _controllers + .forEach((dynamic controller) => controller.removeListener(_onChanged)); + + final expense = widget.viewModel.expense; + + _controllers + .forEach((dynamic controller) => controller.addListener(_onChanged)); + + super.didChangeDependencies(); + } + + @override + void dispose() { + _controllers.forEach((dynamic controller) { + controller.removeListener(_onChanged); + controller.dispose(); + }); + + super.dispose(); + } + + void _onChanged() { + final viewModel = widget.viewModel; + final expense = viewModel.expense.rebuild((b) => b); + if (expense != viewModel.expense) { + viewModel.onChanged(expense); + } + } + + @override + Widget build(BuildContext context) { + //final localization = AppLocalization.of(context); + final viewModel = widget.viewModel; + + return ListView( + shrinkWrap: true, + children: [ + FormCard( + children: [ + ], + ), + ], + ); + } +}