Skip to content

Commit

Permalink
fix(#62) : fixes the models by creating them by using the freezed and…
Browse files Browse the repository at this point in the history
… injected
  • Loading branch information
i-am-ijaz committed Jun 10, 2023
1 parent e8dc8db commit ad0194f
Show file tree
Hide file tree
Showing 18 changed files with 262 additions and 191 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,5 @@ app.*.symbols
# Obfuscation related
app.*.map.json
google-services.json
/lib/models/**/*.freezed.dart
/lib/models/**/*.g.dart
3 changes: 3 additions & 0 deletions build_runner_clean.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

flutter pub run build_runner build --delete-conflicting-outputs
13 changes: 7 additions & 6 deletions lib/app/pages/child_details_page.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import 'dart:async';

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:provider/provider.dart';

import 'package:parental_control/app/helpers/parsing_extension.dart';
import 'package:parental_control/common_widgets/bar_chart.dart';
import 'package:parental_control/common_widgets/custom_raised_button.dart';
import 'package:parental_control/common_widgets/empty_content.dart';
import 'package:parental_control/common_widgets/show_alert_dialog.dart';
import 'package:parental_control/common_widgets/show_exeption_alert.dart';
import 'package:parental_control/models/child_model.dart';
import 'package:parental_control/models/notification_model.dart';
import 'package:parental_control/models/child_model/child_model.dart';
import 'package:parental_control/models/notification_model/notification_model.dart';
import 'package:parental_control/services/database.dart';
import 'package:provider/provider.dart';

class ChildDetailsPage extends StatefulWidget {
const ChildDetailsPage({required this.database, required this.childModel});
Expand Down Expand Up @@ -255,12 +256,12 @@ class _ChildDetailsPageState extends State<ChildDetailsPage> {
ListTile(
leading: Icon(Icons.phone_android),
title: Text(
'${model.appsUsageModel[index]['appName']}',
'${model.appsUsageModel[index].appName}',
style: TextStyle(
fontSize: 15, fontWeight: FontWeight.bold),
),
trailing: Text(
model.appsUsageModel[index]['usage']
model.appsUsageModel[index].usage
.toString()
.t(),
style: TextStyle(
Expand Down
4 changes: 2 additions & 2 deletions lib/app/pages/child_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:parental_control/app/bloc/child_side_bloc.dart';
import 'package:parental_control/app/pages/set_child_page.dart';
import 'package:parental_control/common_widgets/empty_content.dart';
import 'package:parental_control/models/child_model.dart';
import 'package:parental_control/models/notification_model.dart';
import 'package:parental_control/models/child_model/child_model.dart';
import 'package:parental_control/models/notification_model/notification_model.dart';
import 'package:parental_control/services/app_usage_service.dart';
import 'package:parental_control/services/database.dart';
import 'package:provider/provider.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/app/pages/edit_child_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:parental_control/common_widgets/show_alert_dialog.dart';
import 'package:parental_control/common_widgets/show_exeption_alert.dart';
import 'package:parental_control/models/child_model.dart';
import 'package:parental_control/models/child_model/child_model.dart';
import 'package:parental_control/services/database.dart';
import 'package:path/path.dart' as path;
import 'package:uuid/uuid.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/app/pages/notification_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:parental_control/common_widgets/empty_content.dart';
import 'package:parental_control/models/notification_model.dart';
import 'package:parental_control/models/notification_model/notification_model.dart';
import 'package:parental_control/services/auth.dart';
import 'package:parental_control/services/database.dart';
import 'package:parental_control/services/notification_service.dart';
Expand Down
4 changes: 2 additions & 2 deletions lib/app/pages/parent_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import 'package:parental_control/common_widgets/child_horizontal_view.dart';
import 'package:parental_control/common_widgets/empty_content.dart';
import 'package:parental_control/common_widgets/feature_widget.dart';
import 'package:parental_control/common_widgets/loading_map.dart';
import 'package:parental_control/models/child_model.dart';
import 'package:parental_control/models/child_model/child_model.dart';
import 'package:parental_control/services/auth.dart';
import 'package:parental_control/services/database.dart';
import 'package:parental_control/services/geo_locator_service.dart';
Expand Down Expand Up @@ -299,7 +299,7 @@ class _ParentPageState extends State<ParentPage> with SingleTickerProviderStateM

Widget _buildMapFullScreen(database) {
return Scaffold(
body: Consumer<Position>(builder: (_, position, __) {
body: Consumer<Position?>(builder: (_, position, __) {
return (position != null) ? GeoFull(position, database) : Center(child: CircularProgressIndicator());
}),
floatingActionButtonLocation: FloatingActionButtonLocation.startTop,
Expand Down
60 changes: 32 additions & 28 deletions lib/app/pages/set_child_page.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:parental_control/app/helpers/parsing_extension.dart';
import 'package:parental_control/app/pages/child_page.dart';
import 'package:parental_control/common_widgets/form_submit_button.dart';
import 'package:parental_control/common_widgets/show_alert_dialog.dart';
import 'package:parental_control/models/set_child_model.dart';
import 'package:parental_control/models/child_model/child_model.dart';
import 'package:parental_control/services/database.dart';
import 'package:parental_control/services/geo_locator_service.dart';
import 'package:provider/provider.dart';
Expand Down Expand Up @@ -68,39 +69,42 @@ class _SetChildPageState extends State<SetChildPage> {
}
}

List<Widget> _buildChildren(BuildContext context, {SetChildModel? model}) {
List<Widget> _buildChildren(BuildContext context, {ChildModel? model}) {
return [
TextField(
enabled: appState == AppState.loading ? false : true,
focusNode: _nameFocusNode,
controller: _nameController,
textInputAction: TextInputAction.next,
onEditingComplete: () {
if (model?.nameValidator.isValid(model.name) == true) {
FocusScope.of(context).requestFocus(_keyFocusNode);
}
},
decoration: InputDecoration(
labelText: 'Name',
)),
enabled: appState == AppState.loading ? false : true,
focusNode: _nameFocusNode,
controller: _nameController,
textInputAction: TextInputAction.next,
onEditingComplete: () {
if (model?.name.isValid(model.name) == true) {
FocusScope.of(context).requestFocus(_keyFocusNode);
}
},
decoration: InputDecoration(
labelText: 'Name',
),
),
TextField(
enabled: appState == AppState.loading ? false : true,
focusNode: _keyFocusNode,
controller: _key,
textInputAction: TextInputAction.next,
decoration: InputDecoration(
labelText: 'Unique Key',
)),
enabled: appState == AppState.loading ? false : true,
focusNode: _keyFocusNode,
controller: _key,
textInputAction: TextInputAction.next,
decoration: InputDecoration(
labelText: 'Unique Key',
),
),
SizedBox(height: 8.0),
SizedBox(height: 8.0),
FormSubmitButton(
text: appState == AppState.complete ? 'Submit' : 'Loading ...',
onPressed: () {
setState(() {
appState = AppState.loading;
});
_submit(_nameController.text, _key.text);
}),
text: appState == AppState.complete ? 'Submit' : 'Loading ...',
onPressed: () {
setState(() {
appState = AppState.loading;
});
_submit(_nameController.text, _key.text);
},
),
SizedBox(height: 8.0),
];
}
Expand Down
73 changes: 0 additions & 73 deletions lib/models/child_model.dart

This file was deleted.

53 changes: 53 additions & 0 deletions lib/models/child_model/child_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:parental_control/services/app_usage_local_service.dart';

part 'child_model.freezed.dart';
part 'child_model.g.dart';

@freezed
class ChildModel with _$ChildModel {
// ignore: invalid_annotation_target
@JsonSerializable(explicitToJson: true)
const factory ChildModel({
required final String id,
required final String name,
required final String email,
required final String? image,
final String? token,
@Default(<AppUsageInfo>[])
@AppUsageInfoConverter()
List<AppUsageInfo> appsUsageModel,
@GeoPointConverter() final GeoPoint? position,
}) = _ChildModel;

factory ChildModel.fromJson(Map<String, Object?> json) =>
_$ChildModelFromJson(json);
}

class GeoPointConverter implements JsonConverter<GeoPoint?, GeoPoint?> {
const GeoPointConverter();

@override
GeoPoint? fromJson(GeoPoint? geoPoint) {
return geoPoint;
}

@override
GeoPoint? toJson(GeoPoint? geoPoint) => geoPoint;
}

class AppUsageInfoConverter
implements JsonConverter<AppUsageInfo, Map<String, dynamic>> {
const AppUsageInfoConverter();

@override
AppUsageInfo fromJson(Map<String, dynamic> json) {
return AppUsageInfo.fromMap(json);
}

@override
Map<String, dynamic> toJson(AppUsageInfo appUsageInfo) {
return appUsageInfo.toMap();
}
}
39 changes: 0 additions & 39 deletions lib/models/notification_model.dart

This file was deleted.

19 changes: 19 additions & 0 deletions lib/models/notification_model/notification_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:freezed_annotation/freezed_annotation.dart';

part 'notification_model.freezed.dart';
part 'notification_model.g.dart';

@freezed
class NotificationModel with _$NotificationModel {
// ignore: invalid_annotation_target
@JsonSerializable(explicitToJson: true)
const factory NotificationModel({
required final String? title,
required final String? body,
required final String? message,
required final String? id,
}) = _NotificationModel;

factory NotificationModel.fromJson(Map<String, Object?> json) =>
_$NotificationModelFromJson(json);
}
22 changes: 0 additions & 22 deletions lib/models/set_child_model.dart

This file was deleted.

Loading

0 comments on commit ad0194f

Please sign in to comment.