Merge remote-tracking branch 'origin/master' into monthly_calendar_route
# Conflicts: # pubspec.lock
This commit is contained in:
82
lib/screens/favorites_reorder.dart
Normal file
82
lib/screens/favorites_reorder.dart
Normal file
@@ -0,0 +1,82 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class Favorites {
|
||||
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
|
||||
|
||||
static const List<String> DEFAULT_FAVORITES = [
|
||||
'Football',
|
||||
'Basketball',
|
||||
'Baseball',
|
||||
'Soccer',
|
||||
'Tennis',
|
||||
'Volleyball'
|
||||
];
|
||||
|
||||
Future<List<String>> get_favorites() async {
|
||||
final prefs = await _prefs;
|
||||
return prefs.getStringList('favorites') ?? DEFAULT_FAVORITES;
|
||||
}
|
||||
|
||||
Future<bool> set_favorites(final List<String> favorites) async {
|
||||
final prefs = await _prefs;
|
||||
return await prefs.setStringList('favorites', favorites);
|
||||
}
|
||||
}
|
||||
|
||||
class FavoritesManager extends StatefulWidget {
|
||||
FavoritesManager({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_FavoritesManagerState createState() => _FavoritesManagerState();
|
||||
}
|
||||
|
||||
class _FavoritesManagerState extends State<FavoritesManager> {
|
||||
Favorites _mgr = Favorites();
|
||||
Future<List<String>> _order;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_order = _mgr.get_favorites();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: false,
|
||||
title: Text('Manage Favorites'),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
body: FutureBuilder<List<String>>(
|
||||
future: _order,
|
||||
builder: (ctx, snap) {
|
||||
if (snap.connectionState == ConnectionState.waiting) {
|
||||
return CircularProgressIndicator();
|
||||
} else {
|
||||
var order = snap.data.toList();
|
||||
return ReorderableListView(
|
||||
onReorder: (int oldIdx, int newIdx) {
|
||||
if (newIdx > oldIdx) newIdx--;
|
||||
order.insert(newIdx, order.removeAt(oldIdx));
|
||||
|
||||
setState(() {
|
||||
_mgr.set_favorites(order);
|
||||
_order = Future.value(order);
|
||||
});
|
||||
},
|
||||
children: order.map((sport) {
|
||||
return ListTile(
|
||||
key: Key(sport),
|
||||
title: Text(sport),
|
||||
trailing: Icon(Icons.drag_handle),
|
||||
);
|
||||
}).toList(),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,31 @@
|
||||
import 'package:capstone_hungry_hippos/screens/favorites_reorder.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../news/feed.dart';
|
||||
|
||||
class Home extends StatelessWidget {
|
||||
class Home extends StatefulWidget {
|
||||
@override
|
||||
_HomeState createState() => _HomeState();
|
||||
}
|
||||
|
||||
class _HomeState extends State<Home> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
_AppBar(),
|
||||
SliverList(delegate: SliverChildListDelegate(_buildList())),
|
||||
],
|
||||
body: FutureBuilder(
|
||||
future: _buildList(),
|
||||
builder: (ctx, snap) {
|
||||
if (snap.hasData) {
|
||||
return CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
_AppBar(),
|
||||
SliverList(delegate: SliverChildListDelegate(snap.data)),
|
||||
],
|
||||
);
|
||||
} else {
|
||||
return CircularProgressIndicator();
|
||||
}
|
||||
},
|
||||
),
|
||||
drawer: Drawer(
|
||||
child: ListView(
|
||||
@@ -32,6 +48,21 @@ class Home extends StatelessWidget {
|
||||
onPressed: () => Navigator.pushNamed(context, '/Chat'),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: IconButton(
|
||||
icon: Icon(Icons.voice_chat),
|
||||
onPressed: () => Navigator.pushNamed(context, '/Twitter'),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: IconButton(
|
||||
icon: Icon(Icons.settings),
|
||||
onPressed: () =>
|
||||
Navigator.pushNamed(context, '/Favorites').then((e) {
|
||||
setState(() {});
|
||||
}),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -50,15 +81,15 @@ class _AppBar extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
List _buildList() {
|
||||
Future<List<HorizontalNewsFeed>> _buildList() async {
|
||||
final feed = Feed();
|
||||
List<HorizontalNewsFeed> listItems = List();
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Football")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Soccer")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Basketball")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Volleyball")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Baseball")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Softball")));
|
||||
listItems.add(HorizontalNewsFeed(newsFeed: feed, title: Text("Tennis")));
|
||||
return listItems;
|
||||
final mgr = Favorites();
|
||||
final sports = await mgr.get_favorites();
|
||||
|
||||
return sports.map((sport) {
|
||||
return HorizontalNewsFeed(
|
||||
newsFeed: feed,
|
||||
title: Text(sport),
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
||||
65
lib/screens/twitter_widget.dart
Normal file
65
lib/screens/twitter_widget.dart
Normal 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 let’s celebrate together virtually \n We’re 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, '/'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user