From 2bc130b91a867a784de5074162401c60c0c54e1d Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Fri, 27 Dec 2019 15:06:45 +0800 Subject: [PATCH] improvement: add avatar link url --- lib/screens/gitlab_issue.dart | 5 +++- lib/widgets/avatar.dart | 47 ++++++++++++++++++++++++++++---- lib/widgets/comment_item.dart | 6 ++-- lib/widgets/event_item.dart | 5 +--- lib/widgets/repository_item.dart | 2 +- lib/widgets/user_item.dart | 5 +--- 6 files changed, 51 insertions(+), 19 deletions(-) diff --git a/lib/screens/gitlab_issue.dart b/lib/screens/gitlab_issue.dart index 75f55b8..052dc34 100644 --- a/lib/screens/gitlab_issue.dart +++ b/lib/screens/gitlab_issue.dart @@ -56,7 +56,10 @@ class GitlabIssueScreen extends StatelessWidget { Text(issue.title), Row( children: [ - Avatar(url: issue.author.avatarUrl), + Avatar( + url: issue.author.avatarUrl, + linkUrl: '/user/${issue.author}', + ), Expanded( child: Text(issue.description), ), diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 31f991a..b3a94a0 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -12,12 +12,13 @@ class AvatarSize { class Avatar extends StatelessWidget { final String url; final double size; + final String linkUrl; - Avatar.large({ + Avatar({ @required this.url, - }) : size = 48; - - Avatar({this.url, this.size = AvatarSize.medium}); + this.size = AvatarSize.medium, + this.linkUrl, + }); @override Widget build(BuildContext context) { @@ -34,9 +35,43 @@ class Avatar extends StatelessWidget { ), ), onTap: () { - // Provider.of(context).push( - // context, '/$login'); + if (linkUrl != null) + Provider.of(context).push(context, linkUrl); }, ); } } + +class GithubAvatar extends StatelessWidget { + final String url; + final double size; + final String login; + + GithubAvatar({ + @required this.url, + this.size = AvatarSize.medium, + this.login, + }); + + @override + Widget build(BuildContext context) { + return Avatar(url: url, size: size, linkUrl: '/$login'); + } +} + +class GitlabAvatar extends StatelessWidget { + final String url; + final double size; + final String login; + + GitlabAvatar({ + @required this.url, + this.size = AvatarSize.medium, + this.login, + }); + + @override + Widget build(BuildContext context) { + return Avatar(url: url, size: size, linkUrl: '/$login'); + } +} diff --git a/lib/widgets/comment_item.dart b/lib/widgets/comment_item.dart index 1a76dd5..e82845a 100644 --- a/lib/widgets/comment_item.dart +++ b/lib/widgets/comment_item.dart @@ -45,9 +45,9 @@ class CommentItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Row(children: [ - Link( - url: '/' + payload['author']['login'], - child: Avatar(url: payload['author']['avatarUrl']), + Avatar( + url: payload['author']['avatarUrl'], + linkUrl: '/' + payload['author']['login'], ), SizedBox(width: 8), Expanded( diff --git a/lib/widgets/event_item.dart b/lib/widgets/event_item.dart index 6d6de14..fef2238 100644 --- a/lib/widgets/event_item.dart +++ b/lib/widgets/event_item.dart @@ -52,10 +52,7 @@ class EventItem extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Link( - url: '/' + e.actor.login, - child: Avatar(url: e.actor.avatarUrl), - ), + Avatar(url: e.actor.avatarUrl, linkUrl: '/' + e.actor.login), SizedBox(width: 10), Expanded( child: Column( diff --git a/lib/widgets/repository_item.dart b/lib/widgets/repository_item.dart index 0ba15ab..5279c84 100644 --- a/lib/widgets/repository_item.dart +++ b/lib/widgets/repository_item.dart @@ -148,7 +148,7 @@ class RepositoryItem extends StatelessWidget { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Avatar(url: avatarUrl, size: AvatarSize.small), + Avatar(url: avatarUrl, size: AvatarSize.small, linkUrl: '/$owner'), SizedBox(width: 8), Expanded( child: Column( diff --git a/lib/widgets/user_item.dart b/lib/widgets/user_item.dart index dbee915..45ec942 100644 --- a/lib/widgets/user_item.dart +++ b/lib/widgets/user_item.dart @@ -88,10 +88,7 @@ class UserItem extends StatelessWidget { if (inUserScreen) { return widget; } else { - return Link( - url: '/$login', - child: widget, - ); + return Link(url: '/$login', child: widget); } } }