Added [EventModel] and [TaskModel]

This commit is contained in:
Mariano Uvalle 2019-02-21 22:44:08 -06:00
parent 4ab33d377f
commit 5c2375fb21
7 changed files with 129 additions and 24 deletions

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildSystemType</key>
<string>Original</string>
</dict>
</plist>

View file

@ -1,10 +1,39 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import './models/user_model.dart';
import './resources/firebase_provider.dart';
class App extends StatelessWidget { class App extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final fire = FirebaseProvider();
return MaterialApp( return MaterialApp(
title: 'Do more', title: 'Do more',
home: Text('Start'), //home: Text('Start'),
home: Scaffold(
appBar: AppBar(
title: Text('DO>'),
),
body: StreamBuilder(
stream: fire.getUser('mariano159357'),
builder:
(BuildContext context, AsyncSnapshot<UserModel> userSnapshot) {
if (!userSnapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
return Column(
children: <Widget>[
Text('${userSnapshot.data.pendingHigh}'),
MaterialButton(
onPressed: () {},
child: Text('Add task'),
),
],
);
},
),
),
); );
} }
} }

View file

@ -0,0 +1,33 @@
import 'package:meta/meta.dart';
class EventModel {
final String name;
final int pendigTasks;
final List<bool> when;
final List<String> media;
final List<String> tasks;
final int highPriority;
final int mediumPriority;
final int lowPriority;
EventModel({
@required this.name,
@required this.pendigTasks,
@required this.when,
@required this.media,
@required this.tasks,
@required this.highPriority,
@required this.mediumPriority,
@required this.lowPriority,
});
EventModel.fromFirestore(Map<String, dynamic> firestoreMap)
: name = firestoreMap["name"],
pendigTasks = firestoreMap["pendingTasks"],
when = firestoreMap["when"].cast<bool>(),
media = firestoreMap["media"].cast<String>(),
tasks = firestoreMap["tasks"].cast<String>(),
highPriority = firestoreMap["highPriority"],
mediumPriority = firestoreMap["mediumPriority"],
lowPriority = firestoreMap["lowPriority"];
}

View file

@ -1,14 +1,17 @@
/// A summary of a user's week.
///
/// It represents how many tasks were completed and added by a user every day.
class SummaryModel { class SummaryModel {
final int completedMonday; int completedMonday;
final int addedMonday; int addedMonday;
final int completedTuesday; int completedTuesday;
final int addedTuesday; int addedTuesday;
final int completedWednesday; int completedWednesday;
final int addedWednesday; int addedWednesday;
final int completedThursday; int completedThursday;
final int addedThursday; int addedThursday;
final int completedFriday; int completedFriday;
final int addedFriday; int addedFriday;
SummaryModel({ SummaryModel({
this.completedMonday, this.completedMonday,
@ -23,15 +26,17 @@ class SummaryModel {
this.addedFriday, this.addedFriday,
}); });
SummaryModel.fromMap(Map<String, dynamic> map) /// Returns a [SummaryModel] from a map.
: completedMonday = map["completedMonday"], SummaryModel.fromMap(Map<String, dynamic> map) {
addedMonday = map["addedMonday"], completedMonday = map["completedMonday"];
completedTuesday = map["completedTuesday"], addedMonday = map["addedMonday"];
addedTuesday = map["addedTuesday"], completedTuesday = map["completedTuesday"];
completedWednesday = map["completedWednesday"], addedTuesday = map["addedTuesday"];
addedWednesday = map["addedWednesday"], completedWednesday = map["completedWednesday"];
completedThursday = map["completedThursday"], addedWednesday = map["addedWednesday"];
addedThursday = map["addedThursday"], completedThursday = map["completedThursday"];
completedFriday = map["completedFriday"], addedThursday = map["addedThursday"];
addedFriday = map["addedFriday"]; completedFriday = map["completedFriday"];
addedFriday = map["addedFriday"];
}
} }

View file

@ -0,0 +1,24 @@
import 'package:meta/meta.dart';
class TaskModel {
final String text;
final int priority;
final String ownerUsername;
final bool done;
final String event;
TaskModel({
@required this.text,
@required this.priority,
@required this.ownerUsername,
@required this.done,
@required this.event,
});
TaskModel.fromFirestore(Map<String, dynamic> firestoreMap)
: text = firestoreMap["text"],
priority = firestoreMap["priority"],
ownerUsername = firestoreMap["ownerUsername"],
done = firestoreMap["done"],
event = firestoreMap["event"];
}

View file

@ -1,5 +1,8 @@
import 'summary_model.dart'; import 'summary_model.dart';
/// An app user.
///
/// Represents all of a users data.
class UserModel { class UserModel {
final String username; final String username;
final List<int> tasks; final List<int> tasks;
@ -25,10 +28,12 @@ class UserModel {
assert(pendingMedium != null), assert(pendingMedium != null),
assert(pendingLow != null); assert(pendingLow != null);
///Returns a [UserModel] from a map.
UserModel.fromFirestore(Map<String, dynamic> firestoreMap) UserModel.fromFirestore(Map<String, dynamic> firestoreMap)
: username = firestoreMap["username"], : username = firestoreMap["username"],
tasks = firestoreMap["tasks"].cast<int>(), tasks = firestoreMap["tasks"].cast<int>(),
summary = SummaryModel.fromMap(firestoreMap), summary =
SummaryModel.fromMap(firestoreMap["summary"].cast<String, int>()),
userId = firestoreMap["userId"], userId = firestoreMap["userId"],
pendingHigh = firestoreMap["pendingHigh"], pendingHigh = firestoreMap["pendingHigh"],
pendingMedium = firestoreMap["pendingMedium"], pendingMedium = firestoreMap["pendingMedium"],

View file

@ -22,7 +22,8 @@ dependencies:
http: ^0.12.0 http: ^0.12.0
sqflite: ^1.1.0 sqflite: ^1.1.0
rxdart: ^0.20.0 rxdart: ^0.20.0
firebase_core: ^0.3.0+2 firebase_core: ^0.3.0
firebase_analytics: ^2.0.2
cloud_firestore: ^0.9.0 cloud_firestore: ^0.9.0
firebase_auth: ^0.8.1 firebase_auth: ^0.8.1
firebase_ml_vision: ^0.6.0 firebase_ml_vision: ^0.6.0