diff --git a/lib/screens/notifications.dart b/lib/screens/notifications.dart index 08096d8..c3f72fe 100644 --- a/lib/screens/notifications.dart +++ b/lib/screens/notifications.dart @@ -8,7 +8,7 @@ import '../widgets/link.dart'; import '../utils/utils.dart'; String getRepoKey(NotificationGroup group) { - return '_' + group.owner + '_' + group.name; + return ('_' + group.owner + '_' + group.name).replaceAll('-', '__'); } String getItemKey(NotificationPayload item) { @@ -98,7 +98,7 @@ class NotificationScreen extends StatefulWidget { class NotificationScreenState extends State { int active = 0; - bool loading = false; + bool loading; Map groupMap = {}; @override diff --git a/lib/screens/repo.dart b/lib/screens/repo.dart index cc1cc9c..c00417f 100644 --- a/lib/screens/repo.dart +++ b/lib/screens/repo.dart @@ -63,21 +63,35 @@ class RepoScreen extends StatefulWidget { class _RepoScreenState extends State { Map payload; String readme; + bool loading; + + @override + void initState() { + super.initState(); + _refresh(); + } + + Future _refresh() async { + setState(() { + loading = true; + }); + List items = await Future.wait([ + queryRepo(widget.owner, widget.name), + fetchReadme(widget.owner, widget.name), + ]); + setState(() { + loading = false; + payload = items[0]; + readme = items[1]; + }); + } @override Widget build(BuildContext context) { return RefreshScaffold( + loading: loading, title: Text(widget.owner + '/' + widget.name), - onRefresh: () async { - List items = await Future.wait([ - queryRepo(widget.owner, widget.name), - fetchReadme(widget.owner, widget.name), - ]); - setState(() { - payload = items[0]; - readme = items[1]; - }); - }, + onRefresh: _refresh, bodyBuilder: () { return Column( children: [ diff --git a/lib/screens/user.dart b/lib/screens/user.dart index bee2ebe..133f553 100644 --- a/lib/screens/user.dart +++ b/lib/screens/user.dart @@ -75,7 +75,14 @@ class UserScreen extends StatefulWidget { } class _UserScreenState extends State { - Map payload; + bool loading; + Map payload = {}; + + @override + void initState() { + super.initState(); + _refresh(); + } Widget _buildRepos() { String title; @@ -95,16 +102,25 @@ class _UserScreenState extends State { ); } + Future _refresh() async { + setState(() { + loading = true; + }); + var _payload = await queryUser(widget.login); + if (mounted) { + setState(() { + loading = false; + payload = _payload; + }); + } + } + @override Widget build(BuildContext context) { return RefreshScaffold( - onRefresh: () async { - var _payload = await queryUser(widget.login); - setState(() { - payload = _payload; - }); - }, + onRefresh: _refresh, title: Text(widget.login), + loading: loading, bodyBuilder: () { return Column( children: [