This commit is contained in:
Hillel Coren 2018-12-13 16:38:33 +02:00
parent 233f7ea460
commit ff896f491f
13 changed files with 76 additions and 77 deletions

View File

@ -21,15 +21,14 @@ import 'package:invoiceninja_flutter/redux/product/product_state.dart';
import 'package:invoiceninja_flutter/redux/client/client_state.dart';
import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart';
// STARTER: import - do not remove comment
import 'package:invoiceninja_flutter/data/models/project_model.dart';
import 'package:invoiceninja_flutter/redux/project/project_state.dart';
import 'package:invoiceninja_flutter/redux/payment/payment_state.dart';
import 'package:invoiceninja_flutter/redux/quote/quote_state.dart';
part 'serializers.g.dart';
@SerializersFor(const [
@ -78,11 +77,9 @@ part 'serializers.g.dart';
TimezoneItemResponse,
TimezoneListResponse,
// STARTER: serializers - do not remove comment
ProjectEntity,
PaymentEntity,
ProjectEntity,
PaymentEntity,
])
final Serializers serializers =
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();

View File

@ -9,12 +9,12 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/data/web_client.dart';
class ProjectRepository {
final WebClient webClient;
const ProjectRepository({
this.webClient = const WebClient(),
});
final WebClient webClient;
Future<ProjectEntity> loadItem(
CompanyEntity company, AuthState auth, int entityId) async {
final dynamic response = await webClient.get(

View File

@ -6,13 +6,13 @@ import 'package:invoiceninja_flutter/ui/app/buttons/refresh_icon_button.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class ProjectEdit extends StatefulWidget {
final ProjectEditVM viewModel;
const ProjectEdit({
Key key,
@required this.viewModel,
}) : super(key: key);
final ProjectEditVM viewModel;
@override
_ProjectEditState createState() => _ProjectEditState();
}
@ -33,7 +33,7 @@ class _ProjectEditState extends State<ProjectEdit> {
_controllers.forEach((controller) => controller.removeListener(_onChanged));
final project = widget.viewModel.project;
//final project = widget.viewModel.project;
// STARTER: read value - do not remove comment
_controllers.forEach((controller) => controller.addListener(_onChanged));

View File

@ -9,11 +9,11 @@ import 'package:invoiceninja_flutter/redux/project/project_actions.dart';
import 'package:invoiceninja_flutter/data/models/project_model.dart';
import 'package:invoiceninja_flutter/ui/project/edit/project_edit.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
class ProjectEditScreen extends StatelessWidget {
const ProjectEditScreen({Key key}) : super(key: key);
static const String route = '/project/edit';
ProjectEditScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -31,14 +31,6 @@ class ProjectEditScreen extends StatelessWidget {
}
class ProjectEditVM {
final ProjectEntity project;
final Function(ProjectEntity) onChanged;
final Function(BuildContext) onSavePressed;
final bool isSaving;
final ProjectEntity origProject;
final Function onBackPressed;
final bool isLoading;
ProjectEditVM({
@required this.project,
@required this.onChanged,
@ -81,4 +73,12 @@ class ProjectEditVM {
},
);
}
final ProjectEntity project;
final Function(ProjectEntity) onChanged;
final Function(BuildContext) onSavePressed;
final bool isSaving;
final ProjectEntity origProject;
final Function onBackPressed;
final bool isLoading;
}

View File

@ -8,8 +8,6 @@ import 'package:invoiceninja_flutter/ui/project/project_list_vm.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class ProjectList extends StatelessWidget {
final ProjectListVM viewModel;
const ProjectList({
Key key,
@required this.viewModel,
@ -116,4 +114,6 @@ class ProjectList extends StatelessWidget {
}),
);
}
final ProjectListVM viewModel;
}

View File

@ -6,15 +6,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
class ProjectListItem extends StatelessWidget {
final UserEntity user;
final Function(EntityAction) onEntityAction;
final GestureTapCallback onTap;
final GestureTapCallback onLongPress;
//final ValueChanged<bool> onCheckboxChanged;
final ProjectEntity project;
final String filter;
static final projectItemKey = (int id) => Key('__project_item_${id}__');
const ProjectListItem({
@required this.user,
@ -26,6 +17,16 @@ class ProjectListItem extends StatelessWidget {
@required this.filter,
});
final UserEntity user;
final Function(EntityAction) onEntityAction;
final GestureTapCallback onTap;
final GestureTapCallback onLongPress;
//final ValueChanged<bool> onCheckboxChanged;
final ProjectEntity project;
final String filter;
static final projectItemKey = (int id) => Key('__project_item_${id}__');
@override
Widget build(BuildContext context) {
final filterMatch = filter != null && filter.isNotEmpty

View File

@ -30,17 +30,6 @@ class ProjectListBuilder extends StatelessWidget {
}
class ProjectListVM {
final UserEntity user;
final List<int> projectList;
final BuiltMap<int, ProjectEntity> projectMap;
final String filter;
final bool isLoading;
final bool isLoaded;
final Function(BuildContext, ProjectEntity) onProjectTap;
final Function(BuildContext, ProjectEntity, DismissDirection) onDismissed;
final Function(BuildContext) onRefreshed;
final Function(BuildContext, ProjectEntity, EntityAction) onEntityAction;
ProjectListVM({
@required this.user,
@required this.projectList,
@ -132,4 +121,15 @@ class ProjectListVM {
}
});
}
final UserEntity user;
final List<int> projectList;
final BuiltMap<int, ProjectEntity> projectMap;
final String filter;
final bool isLoading;
final bool isLoaded;
final Function(BuildContext, ProjectEntity) onProjectTap;
final Function(BuildContext, ProjectEntity, DismissDirection) onDismissed;
final Function(BuildContext) onRefreshed;
final Function(BuildContext, ProjectEntity, EntityAction) onEntityAction;
}

View File

@ -9,12 +9,13 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/data/web_client.dart';
class StubRepository {
final WebClient webClient;
const StubRepository({
this.webClient = const WebClient(),
});
final WebClient webClient;
Future<StubEntity> loadItem(
CompanyEntity company, AuthState auth, int entityId) async {
final dynamic response = await webClient.get(

View File

@ -6,13 +6,13 @@ import 'package:invoiceninja_flutter/ui/app/buttons/refresh_icon_button.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class StubEdit extends StatefulWidget {
final StubEditVM viewModel;
const StubEdit({
Key key,
@required this.viewModel,
}) : super(key: key);
final StubEditVM viewModel;
@override
_StubEditState createState() => _StubEditState();
}

View File

@ -9,11 +9,10 @@ import 'package:invoiceninja_flutter/redux/stub/stub_actions.dart';
import 'package:invoiceninja_flutter/data/models/stub_model.dart';
import 'package:invoiceninja_flutter/ui/stub/edit/stub_edit.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
class StubEditScreen extends StatelessWidget {
const StubEditScreen({Key key}) : super(key: key);
static const String route = '/stub/edit';
StubEditScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -31,12 +30,6 @@ class StubEditScreen extends StatelessWidget {
}
class StubEditVM {
final StubEntity stub;
final Function(StubEntity) onChanged;
final Function(BuildContext) onSavePressed;
final Function onBackPressed;
final bool isLoading;
StubEditVM({
@required this.stub,
@required this.onChanged,
@ -77,4 +70,10 @@ class StubEditVM {
},
);
}
final StubEntity stub;
final Function(StubEntity) onChanged;
final Function(BuildContext) onSavePressed;
final Function onBackPressed;
final bool isLoading;
}

View File

@ -8,8 +8,6 @@ import 'package:invoiceninja_flutter/ui/stub/stub_list_vm.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class StubList extends StatelessWidget {
final StubListVM viewModel;
const StubList({
Key key,
@required this.viewModel,
@ -116,4 +114,6 @@ class StubList extends StatelessWidget {
}),
);
}
final StubListVM viewModel;
}

View File

@ -6,15 +6,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
class StubListItem extends StatelessWidget {
final UserEntity user;
final Function(EntityAction) onEntityAction;
final GestureTapCallback onTap;
final GestureTapCallback onLongPress;
//final ValueChanged<bool> onCheckboxChanged;
final StubEntity stub;
final String filter;
static final stubItemKey = (int id) => Key('__stub_item_${id}__');
const StubListItem({
@required this.user,
@ -26,6 +17,16 @@ class StubListItem extends StatelessWidget {
@required this.filter,
});
final UserEntity user;
final Function(EntityAction) onEntityAction;
final GestureTapCallback onTap;
final GestureTapCallback onLongPress;
//final ValueChanged<bool> onCheckboxChanged;
final StubEntity stub;
final String filter;
static final stubItemKey = (int id) => Key('__stub_item_${id}__');
@override
Widget build(BuildContext context) {
final filterMatch = filter != null && filter.isNotEmpty

View File

@ -30,17 +30,6 @@ class StubListBuilder extends StatelessWidget {
}
class StubListVM {
final UserEntity user;
final List<int> stubList;
final BuiltMap<int, StubEntity> stubMap;
final String filter;
final bool isLoading;
final bool isLoaded;
final Function(BuildContext, StubEntity) onStubTap;
final Function(BuildContext, StubEntity, DismissDirection) onDismissed;
final Function(BuildContext) onRefreshed;
final Function(BuildContext, StubEntity, EntityAction) onEntityAction;
StubListVM({
@required this.user,
@required this.stubList,
@ -132,4 +121,15 @@ class StubListVM {
}
});
}
final UserEntity user;
final List<int> stubList;
final BuiltMap<int, StubEntity> stubMap;
final String filter;
final bool isLoading;
final bool isLoaded;
final Function(BuildContext, StubEntity) onStubTap;
final Function(BuildContext, StubEntity, DismissDirection) onDismissed;
final Function(BuildContext) onRefreshed;
final Function(BuildContext, StubEntity, EntityAction) onEntityAction;
}