Merge remote-tracking branch 'origin/master' into standings

# Conflicts:
#	pubspec.lock
#	pubspec.yaml
This commit is contained in:
Carlos Lopez-Rosario
2020-04-10 15:02:22 -04:00
16 changed files with 1126 additions and 7 deletions

View File

@@ -0,0 +1,332 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:io';
class Details extends StatelessWidget {
static final List<Item> colorList = <Item>[
const Item('FootBall', Colors.green),
const Item("BasketBall", Colors.red),
const Item("Soccer", Colors.pinkAccent),
const Item('Baseball', Colors.orange),
];
Item _curSport = colorList[0];
@override
Widget build(BuildContext context) {
Item selectedSport;
return StatefulBuilder(
builder: (context, StateSetter setState) => Scaffold(
appBar: AppBar(
centerTitle: false,
title: Text('Game Details'),
backgroundColor: Colors.green,
),
body: Container(
color: Colors.black12,
child: Column(
children: <Widget>[
Container(
color: Colors.black12,
child: Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.black,
width: 2.0,
),
),
),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 40.0),
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(right: 5),
child: Column(
children: <Widget>[
SizedBox(
height: 45,
width: 45,
child: Image.network('https://upload.wikimedia.org/wikipedia/en/thumb/3/33/Charlotte_49ers_logo.svg/1200px-Charlotte_49ers_logo.svg.png'),
),
Text('UNCC',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 0, horizontal: 25),
child: Text('10',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 0, horizontal: 25),
child: Text('vs',
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 0, horizontal: 25),
child: Text('52',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
),
Padding(
padding: EdgeInsets.only(left: 5),
child: Column(
children: <Widget>[
SizedBox(
width: 50,
height: 50,
child: Image.network('https://www.clemson.edu/brand/resources/logos/paw/orange.png'),
),
Text('Clemson',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
),
],
),
),
),
),
Container(
color: Colors.black12,
child: Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(
color: Colors.black,
width: 2.0,
),
bottom: BorderSide(
color: Colors.black,
width: 2.0,
),
),
),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 0.0, horizontal: 5.0),
child: Row(
children: <Widget>[
Container(
child: Card(
child: SizedBox(
width: 90,
height: 30,
child: Center(
child: Text('Standings',
style: TextStyle(fontSize: 16),
),
),
),
),
),
Container(
child: Card(
child: SizedBox(
width: 90,
height: 30,
child: Center(
child: Text('Schedule',
style: TextStyle(fontSize: 16),
),
),
),
),
),
Container(
child: Card(
child: SizedBox(
width: 100,
height: 30,
child: Center(
child: Text('Play-By-Play',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
),
),
),
),
Container(
color: Colors.black12,
child: Card(
child: SizedBox(
width: 89,
height: 30,
child: Center(
child: Text('Chat',
style: TextStyle(fontSize: 16),
),
),
),
),
),
],
),
),
),
),
Container(
child: GameUpdates(),
),
],
),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
DrawerHeader(
child: Text(
'Drawer Header',
style: TextStyle(
color: Colors.white,
fontSize: 24,
),
),
decoration: BoxDecoration(
color: Colors.green,
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.home),
onPressed: () => Navigator.pushNamed(context, '/'),
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.table_chart),
onPressed: () => Navigator.pushNamed(context, '/Standing'),
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.calendar_today),
onPressed: () => Navigator.pushNamed(context, '/Schedule'),
),
),
],
),
),
),
);
}
}
class Item {
const Item(this.name, this.color);
final String name;
final Color color;
}
class Play {
final String title;
final String action;
Play(
this.title,
this.action,
);
}
class GameUpdates extends StatelessWidget{
List<Play> myList = [];
final test1 = new Play('1st and 10 at CLT 25', '(6:12 - 4th) Aidan Swanson kickoff for 65 yds for a touchback');
final test2 = new Play('2nd & 10 at CLT 25', '(5:00 - 4th) Ishod Finger run for no gain to the Charl 25');
final test3 = new Play('3rd & 10 at CLT 25', '(4:30 - 4th) CHARLOTTE Penalty, False Start (-5 Yards) to the Charl 20');
final test4 = new Play('3rd & 15 at CLT 20', '(4:00 - 4th) Brett Kean run for 5 yds to the Charl 25');
final test5 = new Play('4th & 10 at CLT 25', '(3:31 - 4th) Connor Bowler punt for 48 yds , Will Brown returns for 13 yds to the Clem 40');
final test6 = new Play('1st & 10 at CLEM 40','(3:00 - 4th) Taisun Phommachanh pass complete to Will Brown for 8 yds to the Clem 48');
final test7 = new Play('2nd & 2 at CLEM 48','(2:40 - 4th) Chez Mellusi run for 3 yds to the Charl 49 for a 1ST down');
final test8 = new Play('1st & 10 at CLT 49','(2:25 - 4th) Chez Mellusi run for 8 yds to the Charl 41');
final test9 = new Play('2nd & 2 at CLT 41','(1:37 - 4th) Ben Batson run for 5 yds to the Charl 36 for a 1ST down');
final test10 = new Play('1st & 10 at CLT 36', '(1:30 - 4th) CLEMSON Penalty, False Start (-5 Yards) to the Charl 41');
final test11 = new Play('1st & 15 at CLT 41','(0:55 - 4th) Chez Mellusi run for 4 yds to the Charl 37');
final test12 = new Play('2nd & 11 at CLT 37','(0:25 - 4th) Patrick McClure run for 3 yds to the Charl 34');
final test13 = new Play('3rd & 8 at CLT 34','(0:05 - 4th) Chez Mellusi run for 7 yds to the Charl 27');
final test14 = new Play('4th & 1 at CLT 27','(0:00 - 4th) Patrick McClure run for 9 yds to the Charl 18 for a 1ST down');
@override
Widget build(BuildContext context) {
var myStream = Stream<int>.periodic(Duration(seconds:5), (x) => x).take(15);
myList.add(test1);
myList.add(test2);
myList.add(test3);
myList.add(test4);
myList.add(test5);
myList.add(test6);
myList.add(test7);
myList.add(test8);
myList.add(test9);
myList.add(test10);
myList.add(test11);
myList.add(test12);
myList.add(test13);
myList.add(test14);
/* return StreamBuilder(
stream: myStream,
initialData: '0',
builder: (ctx, snapshot){
return Card(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 5),
child: Text('${snapshot.data}'),
),
);
},
); */
return Expanded(
child: Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: myList.length,
itemBuilder: (context, int index){
return Card(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 5,horizontal: 10),
child: ListTile(
title: Text('${myList[index].title}'),
subtitle: Padding(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20),
child: Text('${myList[index].action}'),
),
),
),
);
}
),
),
);
}
}

View File

@@ -48,6 +48,18 @@ class _HomeState extends State<Home> {
onPressed: () => Navigator.pushNamed(context, '/Chat'),
),
),
ListTile( //added by Kaleb to test details page. Will update path / delete when we have game tiles implemented.
title: IconButton(
icon: Icon(Icons.book),
onPressed: () => Navigator.pushNamed(context, '/Details'),
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.voice_chat),
onPressed: () => Navigator.pushNamed(context, '/Twitter'),
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.settings),

View File

@@ -1,6 +1,10 @@
import 'package:flutter/material.dart';
import '../monthly_calendar.dart';
class Schedule extends StatelessWidget{
final calendar = Calendar();
@override
Widget build(BuildContext context) {
return StatefulBuilder(
@@ -10,7 +14,9 @@ class Schedule extends StatelessWidget{
title: Text("49ers"),
backgroundColor: Colors.green,
),
body: Text("Schedule Goes Here"),
body: Container (
child: calendar,
),
drawer: Drawer(
child: ListView(
children: <Widget>[

View File

@@ -12,9 +12,15 @@ class Sport extends StatelessWidget {
Item _curSport = colorList[0];
final feed = Feed(); // was var not final
bool genderSportSwitch = false; //determines if sport needs the gender switch
final String imageMale = 'images/male.png';
final String imageFemale = 'images/female.png';
static bool genderSport = false; //determines which gender switch is set M - false / F - True
static int sport_ID;
@override
Widget build(BuildContext context) {
Item selectedSport;
@@ -25,6 +31,32 @@ class Sport extends StatelessWidget {
centerTitle: false,
title: buildDropdownButton(selectedSport, setState),
backgroundColor: _curSport.color,
//--Gender Switch-- Need to make condition to determine gender
actions: <Widget>[
if (genderSportSwitch == true)
Switch(
value: genderSport,
onChanged: (value) {
setState(() {
if (value == false) {
genderSport = false;
}
else {
genderSport = true;
}
print("value: " + value.toString());
print("gender: " + genderSport.toString());
});
},
inactiveThumbColor: Colors.lightBlue,
inactiveThumbImage: Image.asset(imageMale).image,
activeColor: Colors.pinkAccent,
activeThumbImage: Image.asset(imageFemale).image,
),
]
),
body: ListView(
children: <Widget>[
@@ -91,6 +123,45 @@ class Sport extends StatelessWidget {
onChanged: (Item value) {
setState(() {
_curSport = value;
print("genderSport: " + genderSport.toString());
//Will set the sport id / Display gender switch
switch (_curSport.name) { //prints are temp
case 'FootBall':
genderSportSwitch = false;
sport_ID = 3;
break;
case 'BasketBall':
genderSportSwitch = true;
if (genderSport == false) {
sport_ID = 5; //Male
}
else {
sport_ID = 13; //Female
}
break;
case 'Soccer':
genderSportSwitch = true;
if (genderSport == false) {
sport_ID = 9; //Male
}
else {
sport_ID = 17; //Female
}
break;
case 'Baseball':
genderSportSwitch = false;
sport_ID = 1;
break;
}
print(sport_ID);
});
},
items: colorList.map<DropdownMenuItem<Item>>((Item item) {

View File

@@ -0,0 +1,64 @@
import 'package:flutter/material.dart';
class sport_schedule {
final int id; //id for each game
final DateTime date; //date: 2020-09-05T00:00:00
final String location_indicator; //location_indicator: H-Home / A-Away
final String location; //location: Knoxville, Tenn., Charlotte, NC
// -- sport json --
final int idSport; //id: Each sport different number
final String sportTitle; //title: Football, Men's Soccer
final String gender; //gender: M - F
// -- opponent json --
final String opponentTitle; //title: Tennessee, Norfolk State
//final image - image: (do later)
// -- result json --
final String status; //status: W - T - L
final String team_score; //team_score:
final String opponent_score; //opponent_score:
final String postscore;
sport_schedule(
this.id, {
this.date,
this.location_indicator,
this.location,
this.idSport,
this.sportTitle,
this.gender,
this.opponentTitle,
//this.image,
this.status,
this.team_score,
this.opponent_score,
this.postscore,
});
factory sport_schedule.fromJson(Map<String, dynamic> json) {
return sport_schedule(
json['id'],
date: DateTime.parse(json['date']),
location_indicator: json['location_indicator'],
location: json['location'],
idSport: json['sport']['id'],
sportTitle: json['sport']['title'],
gender: json['sport']['gender'],
opponentTitle: json['opponent']['title'],
//image: json['opponent']['image'],
status: json['result']['status'],
team_score: json['result']['team_score'],
opponent_score: json['result']['opponent_score'],
postscore: json['result']['postscore'],
);
}
}

View File

@@ -0,0 +1,65 @@
import 'package:capstone_hungry_hippos/twitter_assets/twitterFeed.dart';
import 'package:flutter/material.dart';
import '../twitter_assets/tweet.dart';
class TwitterFeed extends StatelessWidget{
List<Tweet> fuck = [];
final test = new Tweet(1, "We'll get through this together, Niner Nation. #WeAreAllNiners", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test2 = new Tweet(2, "Let's test your UNC Charlotte knowledge...do you know why we became the 49ers? Here's the full history on the pioneering spirit that shaped our trajectory http://bit.ly/UNCC-1949", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test3 = new Tweet(3, "Niner Nation means uplifting each other. This 4/9 Day, let's show our students why #WeAreAllNiners by supporting the Student Emergency Relief Fund http://bit.ly/UNCC-SER", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test4 = new Tweet(4, "Niner Nation: Chancellor Dubois shares that UNC Charlotte will be able to apply our established parking refund procedures with special considerations for the impact of COVID-19.", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test5 = new Tweet(5, "4/9 Day is just for us, Niner Nation. From wherever you are, you're family #WeAreAllNiners", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test6= new Tweet(6, "Niner Nation, #49erAlumni Gene Johnson 73 is getting us excited for 4/9 Day tomorrow! Put on your Niner gear, call your friends and lets celebrate together virtually \n Were all in this together! ", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
final test7 = new Tweet(7, "From virtual events to one-on-one sessions with counselors, it's easy to stay connected with @UNCCAdmissions", "@unccharlotte", "https://pbs.twimg.com/profile_images/1175214096280629249/QC79Xju2_400x400.jpg", "test");
@override
Widget build(BuildContext context) {
fuck.add(test);
fuck.add(test2);
fuck.add(test3);
fuck.add(test4);
fuck.add(test5);
fuck.add(test6);
fuck.add(test7);
return StatefulBuilder(
builder: (context, StateSetter setState) => Scaffold(
appBar: AppBar(
centerTitle: false,
title: Text("49ers Tweets"),
backgroundColor: Colors.green,
),
body: Container(
color: Colors.black12,
child:
VerticalTwitterFeed(twitterFeed: fuck),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
DrawerHeader(
child: Text(
'Drawer Header',
style: TextStyle(
color: Colors.white,
fontSize: 24,
),
),
decoration: BoxDecoration(
color: Colors.green,
),
),
ListTile(
title: IconButton(
icon: Icon(Icons.home),
onPressed: () => Navigator.pushNamed(context, '/'),
),
),
],
),
)
));
}
}