Skip to content

Commit

Permalink
feat: Day 16
Browse files Browse the repository at this point in the history
  • Loading branch information
BbsonLin committed Sep 17, 2019
1 parent 0883d33 commit abe5077
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 40 deletions.
48 changes: 36 additions & 12 deletions lib/pages/activity.dart
@@ -1,4 +1,6 @@
import 'package:flutter/material.dart';
import 'package:github/server.dart';
import 'package:gitme_reborn/services/github_api.dart';

class ActivityPage extends StatefulWidget {
@override
Expand All @@ -25,24 +27,46 @@ class _ActivityPageState extends State<ActivityPage> {
Widget build(BuildContext context) {
return Scrollbar(
child: RefreshIndicator(
child: ListView.separated(
itemCount: actList.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: Icon(Icons.account_circle),
title: Text(actList[index]["title"]),
subtitle: Text(actList[index]["time"]),
trailing: Icon(Icons.star),
onTap: () {},
);
child: FutureBuilder(
future: fetchActivities(),
builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.done:
if (!snapshot.hasError) {
return ListView.separated(
itemCount: actList.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: Icon(Icons.account_circle),
title: Text(actList[index]["title"]),
subtitle: Text(actList[index]["time"]),
trailing: Icon(Icons.star),
onTap: () {},
);
},
separatorBuilder: (BuildContext context, int index) =>
const Divider(height: 0.0),
);
} else {
return Center(child: Text("No Data"));
}
break;
case ConnectionState.none:
case ConnectionState.active:
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
}
},
separatorBuilder: (BuildContext context, int index) =>
const Divider(height: 0.0),
),
onRefresh: () {
return Future.delayed(Duration(seconds: 2));
},
),
);
}

Future<List> fetchActivities() async {
CurrentUser user = await githubClient.users.getCurrentUser();
return [];
}
}
10 changes: 6 additions & 4 deletions lib/pages/home.dart
Expand Up @@ -255,10 +255,12 @@ class _HomePageState extends State<HomePage> {
Future fetchHNData() async {
Feed hnNew = await hnClient.news();
Feed hnNewest = await hnClient.newest();
setState(() {
_hnTops = hnNew.items;
_hnNews = hnNewest.items;
});
if (this.mounted) {
setState(() {
_hnTops = hnNew.items;
_hnNews = hnNewest.items;
});
}
}

buildHNTopStories(BuildContext context) {
Expand Down
83 changes: 59 additions & 24 deletions lib/pages/issue.dart
@@ -1,44 +1,79 @@
import 'package:flutter/material.dart';
import 'package:github/server.dart';
import 'package:gitme_reborn/services/github_api.dart';
import 'package:timeago/timeago.dart' as timeago;

class IssuePage extends StatefulWidget {
@override
_IssuePageState createState() => _IssuePageState();
}

class _IssuePageState extends State<IssuePage> {
final List issueList = [
{
"title": "Include additional log fields #1",
"time": "11 days ago",
},
{
"title": "AdPlayer Widget #1",
"time": "3 months ago",
},
];
Future<List<Issue>> issueList;

@override
void initState() {
super.initState();
issueList = fetchIssues();
}

@override
Widget build(BuildContext context) {
return Scrollbar(
child: RefreshIndicator(
child: ListView.separated(
itemCount: issueList.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: Icon(Icons.account_circle),
title: Text(issueList[index]["title"]),
subtitle: Text(issueList[index]["time"]),
trailing: Icon(Icons.star),
onTap: () {},
);
child: FutureBuilder(
future: issueList,
builder: (BuildContext context, AsyncSnapshot<List<Issue>> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.done:
if (!snapshot.hasError) {
return ListView.separated(
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
final now = DateTime.now();
final difference =
now.difference(snapshot.data[index].createdAt);
var createTimeAgo =
timeago.format(now.subtract(difference));

return ListTile(
dense: true,
leading: CircleAvatar(
radius: 18.0,
backgroundImage:
NetworkImage(snapshot.data[index].user.avatarUrl),
),
title: Text(snapshot.data[index].title),
subtitle: Text(createTimeAgo),
trailing: Icon(Icons.error_outline),
onTap: () {},
);
},
separatorBuilder: (BuildContext context, int index) =>
const Divider(height: 0.0),
);
} else {
return Center(child: Text("No Data"));
}
break;
case ConnectionState.none:
case ConnectionState.active:
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
}
},
separatorBuilder: (BuildContext context, int index) =>
const Divider(height: 0.0),
),
onRefresh: () {
return Future.delayed(Duration(seconds: 2));
onRefresh: () async {
await Future.delayed(Duration(seconds: 1));
setState(() {
issueList = fetchIssues();
});
},
),
);
}

Future<List<Issue>> fetchIssues() async {
return githubClient.issues.listAll(state: "all").toList();
}
}
7 changes: 7 additions & 0 deletions pubspec.lock
Expand Up @@ -233,6 +233,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.5"
timeago:
dependency: "direct main"
description:
name: timeago
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.19"
typed_data:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Expand Up @@ -29,6 +29,7 @@ dependencies:
flutter_dotenv: ^2.0.3
package_info: ^0.4.0+6
url_launcher: ^5.1.2
timeago: ^2.0.19

# API Usage
hnpwa_client: ^2.0.0
Expand Down

0 comments on commit abe5077

Please sign in to comment.