This commit is contained in:
Hillel Coren 2019-06-05 20:06:03 +03:00
parent 4dad0cd495
commit 2eaccee01c
3 changed files with 157 additions and 2 deletions

View File

@ -1,7 +1,9 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.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_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_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/ui/expense/edit/expense_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
@ -48,8 +50,9 @@ class _ExpenseEditState extends State<ExpenseEdit>
}, },
child: Scaffold( child: Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text( title: Text(expense.isNew
expense.isNew ? localization.newExpense : localization.editExpense), ? localization.newExpense
: localization.editExpense),
actions: <Widget>[ actions: <Widget>[
ActionIconButton( ActionIconButton(
icon: Icons.cloud_upload, icon: Icons.cloud_upload,
@ -72,9 +75,15 @@ class _ExpenseEditState extends State<ExpenseEdit>
Tab( Tab(
text: localization.details, text: localization.details,
), ),
Tab(
text: localization.settings,
),
Tab( Tab(
text: localization.notes, text: localization.notes,
), ),
Tab(
text: localization.documents,
),
], ],
), ),
), ),
@ -86,9 +95,15 @@ class _ExpenseEditState extends State<ExpenseEdit>
ExpenseEditDetails( ExpenseEditDetails(
viewModel: widget.viewModel, viewModel: widget.viewModel,
), ),
ExpenseEditSettings(
viewModel: widget.viewModel,
),
ExpenseEditNotes( ExpenseEditNotes(
viewModel: widget.viewModel, viewModel: widget.viewModel,
), ),
ExpenseEditDocuments(
viewModel: widget.viewModel,
),
], ],
), ),
), ),

View File

@ -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>[
],
),
],
);
}
}

View File

@ -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>[
],
),
],
);
}
}