improvement: add avatar link url

This commit is contained in:
Rongjian Zhang 2019-12-27 15:06:45 +08:00
parent 5fe740f450
commit 2bc130b91a
6 changed files with 51 additions and 19 deletions

View File

@ -56,7 +56,10 @@ class GitlabIssueScreen extends StatelessWidget {
Text(issue.title), Text(issue.title),
Row( Row(
children: <Widget>[ children: <Widget>[
Avatar(url: issue.author.avatarUrl), Avatar(
url: issue.author.avatarUrl,
linkUrl: '/user/${issue.author}',
),
Expanded( Expanded(
child: Text(issue.description), child: Text(issue.description),
), ),

View File

@ -12,12 +12,13 @@ class AvatarSize {
class Avatar extends StatelessWidget { class Avatar extends StatelessWidget {
final String url; final String url;
final double size; final double size;
final String linkUrl;
Avatar.large({ Avatar({
@required this.url, @required this.url,
}) : size = 48; this.size = AvatarSize.medium,
this.linkUrl,
Avatar({this.url, this.size = AvatarSize.medium}); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -34,9 +35,43 @@ class Avatar extends StatelessWidget {
), ),
), ),
onTap: () { onTap: () {
// Provider.of<ThemeModel>(context).push( if (linkUrl != null)
// context, '/$login'); Provider.of<ThemeModel>(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');
}
}

View File

@ -45,9 +45,9 @@ class CommentItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row(children: <Widget>[ Row(children: <Widget>[
Link( Avatar(
url: '/' + payload['author']['login'], url: payload['author']['avatarUrl'],
child: Avatar(url: payload['author']['avatarUrl']), linkUrl: '/' + payload['author']['login'],
), ),
SizedBox(width: 8), SizedBox(width: 8),
Expanded( Expanded(

View File

@ -52,10 +52,7 @@ class EventItem extends StatelessWidget {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Link( Avatar(url: e.actor.avatarUrl, linkUrl: '/' + e.actor.login),
url: '/' + e.actor.login,
child: Avatar(url: e.actor.avatarUrl),
),
SizedBox(width: 10), SizedBox(width: 10),
Expanded( Expanded(
child: Column( child: Column(

View File

@ -148,7 +148,7 @@ class RepositoryItem extends StatelessWidget {
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Avatar(url: avatarUrl, size: AvatarSize.small), Avatar(url: avatarUrl, size: AvatarSize.small, linkUrl: '/$owner'),
SizedBox(width: 8), SizedBox(width: 8),
Expanded( Expanded(
child: Column( child: Column(

View File

@ -88,10 +88,7 @@ class UserItem extends StatelessWidget {
if (inUserScreen) { if (inUserScreen) {
return widget; return widget;
} else { } else {
return Link( return Link(url: '/$login', child: widget);
url: '/$login',
child: widget,
);
} }
} }
} }