refactor: extract all avatar to one widget

This commit is contained in:
Rongjian Zhang
2019-03-09 17:03:33 +08:00
parent 549ef0fa15
commit 3de4ead6b2
6 changed files with 29 additions and 33 deletions

View File

@@ -4,32 +4,38 @@ import '../screens/user.dart';
import 'link.dart';
class Avatar extends StatelessWidget {
final String login;
final String url;
final String login;
final double size;
Avatar({
@required this.login,
@required this.url,
this.size = 18,
this.login,
});
@override
Widget build(BuildContext context) {
return Link(
screenBuilder: (_) => UserScreen(login),
child: ClipRRect(
borderRadius: BorderRadius.circular(size),
child: FadeInImage.assetNetwork(
placeholder: 'images/octoface.png',
image: url,
width: 2 * size,
height: 2 * size,
fadeInDuration: Duration(milliseconds: 200),
fadeOutDuration: Duration(milliseconds: 100),
),
var avatar = ClipRRect(
borderRadius: BorderRadius.circular(size),
child: FadeInImage.assetNetwork(
placeholder: 'images/octoface.png',
image: url,
width: 2 * size,
height: 2 * size,
fadeInDuration: Duration(milliseconds: 200),
fadeOutDuration: Duration(milliseconds: 100),
),
material: false,
);
if (login == null) {
return avatar;
} else {
return Link(
screenBuilder: (_) => UserScreen(login),
child: avatar,
material: false,
);
}
}
}

View File

@@ -14,9 +14,9 @@ class CommentItem extends StatelessWidget {
return Column(children: <Widget>[
Row(children: <Widget>[
Avatar(
login: payload['author']['login'],
url: payload['author']['avatarUrl'],
size: 16,
login: payload['author']['login'],
),
Padding(padding: EdgeInsets.only(left: 6)),
Expanded(

View File

@@ -66,7 +66,7 @@ class EventItem extends StatelessWidget {
children: <Widget>[
Row(
children: <Widget>[
Avatar(login: event.actorLogin, url: event.actorAvatarUrl),
Avatar(url: event.actorAvatarUrl, login: event.actorLogin),
Padding(padding: EdgeInsets.only(left: 10)),
Expanded(
child: RichText(