Expenses
This commit is contained in:
parent
4dad0cd495
commit
2eaccee01c
|
|
@ -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<ExpenseEdit>
|
|||
},
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
expense.isNew ? localization.newExpense : localization.editExpense),
|
||||
title: Text(expense.isNew
|
||||
? localization.newExpense
|
||||
: localization.editExpense),
|
||||
actions: <Widget>[
|
||||
ActionIconButton(
|
||||
icon: Icons.cloud_upload,
|
||||
|
|
@ -72,9 +75,15 @@ class _ExpenseEditState extends State<ExpenseEdit>
|
|||
Tab(
|
||||
text: localization.details,
|
||||
),
|
||||
Tab(
|
||||
text: localization.settings,
|
||||
),
|
||||
Tab(
|
||||
text: localization.notes,
|
||||
),
|
||||
Tab(
|
||||
text: localization.documents,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
@ -86,9 +95,15 @@ class _ExpenseEditState extends State<ExpenseEdit>
|
|||
ExpenseEditDetails(
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
ExpenseEditSettings(
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
ExpenseEditNotes(
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
ExpenseEditDocuments(
|
||||
viewModel: widget.viewModel,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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<ExpenseEditDocuments> {
|
||||
final List<TextEditingController> _controllers = [];
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
final List<TextEditingController> _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: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ExpenseEditSettings> {
|
||||
final List<TextEditingController> _controllers = [];
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
final List<TextEditingController> _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: <Widget>[
|
||||
FormCard(
|
||||
children: <Widget>[
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue