feat: add name to user list item

This commit is contained in:
Rongjian Zhang 2020-10-08 15:55:26 +08:00
parent d89a407cf0
commit 70b2dd4bb0
12 changed files with 67 additions and 40 deletions

View File

@ -25,9 +25,9 @@ class BbTeamsScreen extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem(
return UserItem.bitbucket(
login: v.username,
url: '/bitbucket/${v.username}?team=1',
name: v.nickname,
avatarUrl: v.avatarUrl,
bio: Text('Created ${timeago.format(v.createdOn)}'),
);

View File

@ -31,9 +31,10 @@ class GhUserOrganizationScreen extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem.gh(
return UserItem.github(
avatarUrl: v.avatarUrl,
login: v.login,
name: null, // TODO: organization name
bio: v.description == null ? null : Text(v.description),
);
},

View File

@ -185,9 +185,9 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
isFork: p['isFork'],
);
case 1:
return UserItem.gh(
return UserItem.github(
login: p['login'],
// name: p['name'],
name: p['name'],
avatarUrl: p['avatarUrl'],
bio: Text(p['bio'] ?? ''),
);

View File

@ -48,9 +48,9 @@ class GhTrendingScreen extends StatelessWidget {
]
: [
for (var v in payload.cast<GithubTrendingDeveloper>())
UserItem.gh(
UserItem.github(
login: v.username,
// name: v.name,
name: v.name,
avatarUrl: v.avatar,
bio: v.repo == null
? null

View File

@ -142,9 +142,9 @@ class GhUsersScreen extends StatelessWidget {
}
},
itemBuilder: (payload) {
return UserItem.gh(
return UserItem.github(
login: payload.login,
// name: payload.name,
name: payload.name,
avatarUrl: payload.avatarUrl,
bio: _buildBio(
context, payload.company, payload.location, payload.createdAt),

View File

@ -24,11 +24,12 @@ class GlGroupsScreenn extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem(
return UserItem.gitlab(
avatarUrl: v.avatarUrl,
login: v.path,
name: v.name,
bio: Text(v.description ?? ''),
url: '/gitlab/group/${v.id}',
id: v.id,
);
},
);

View File

@ -38,11 +38,12 @@ class GlMembersScreen extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem(
return UserItem.gitlab(
avatarUrl: v.avatarUrl,
login: v.username,
name: v.name,
bio: Text(accessLevelMap[v.accessLevel] ?? ''),
url: '/gitlab/user/${v.id}',
id: v.id,
);
},
);

View File

@ -102,18 +102,21 @@ class _GlSearchScreenState extends State<GlSearchScreen> {
static const tabs = ['Projects', 'Users'];
Widget _buildItem(p) {
Widget _buildItem(_p) {
switch (_activeTab) {
case 0:
final p = _p as GitlabProject;
final updatedAt = timeago.format(p.lastActivityAt);
return RepositoryItem.gl(
payload: p,
note: 'Updated $updatedAt',
);
case 1:
return UserItem(
final p = _p as GitlabUser;
return UserItem.gitlab(
login: p.username,
url: '/gitlab/user/${p.id}',
name: p.name,
id: p.id,
avatarUrl: p.avatarUrl,
bio: Text(p.bio ?? ''),
);

View File

@ -29,11 +29,12 @@ class GlStarrersScreen extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem(
return UserItem.gitlab(
avatarUrl: v.user.avatarUrl,
login: v.user.username,
name: v.user.name,
bio: Text('Starred ' + timeago.format(v.starredSince)),
url: '/gitlab/user/${v.user.id}',
id: v.user.id,
);
},
);

View File

@ -25,11 +25,11 @@ class GtOrgsScreen extends StatelessWidget {
);
},
itemBuilder: (v) {
return UserItem(
return UserItem.gitea(
avatarUrl: v.avatarUrl,
login: v.username,
name: v.fullName,
bio: Text(v.description ?? v.website ?? v.location),
url: '/gitea/${v.username}?org=1',
);
},
);

View File

@ -41,11 +41,11 @@ class GtUsersScreen extends StatelessWidget {
);
},
itemBuilder: (payload) {
return UserItem(
return UserItem.gitea(
login: payload.login,
name: payload.fullName,
avatarUrl: payload.avatarUrl,
bio: Text('Joined on ${timeago.format(payload.created)}'),
url: '/gitea/${payload.login}',
);
},
);

View File

@ -14,23 +14,39 @@ const userGqlChunk = '''
class UserItem extends StatelessWidget {
final String login;
// final String name;
final String name;
final String avatarUrl;
final Widget bio;
final String url;
UserItem.gh({
@required this.avatarUrl,
UserItem.github({
@required this.login,
@required this.name,
@required this.avatarUrl,
@required this.bio,
}) : url = '/github/$login';
UserItem({
@required this.avatarUrl,
UserItem.gitlab({
@required this.login,
@required this.name,
@required this.avatarUrl,
@required this.bio,
@required this.url,
});
@required int id,
}) : url = '/gitlab/group/$id';
UserItem.gitea({
@required this.login,
@required this.name,
@required this.avatarUrl,
@required this.bio,
}) : url = '/gitea/$login';
UserItem.bitbucket({
@required this.login,
@required this.name,
@required this.avatarUrl,
@required this.bio,
}) : url = '/bitbucket/$login?team=1';
@override
Widget build(BuildContext context) {
@ -40,6 +56,7 @@ class UserItem extends StatelessWidget {
child: Container(
padding: CommonStyle.padding,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Avatar(url: avatarUrl, size: AvatarSize.large),
SizedBox(width: 10),
@ -49,21 +66,24 @@ class UserItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
children: <Widget>[
// Text(
// name ?? login,
// style: TextStyle(
// color: theme.palette.text,
// fontSize: 18,
// ),
// ),
// SizedBox(width: 8),
if (name != null && name.isNotEmpty) ...[
Text(
name,
style: TextStyle(
color: theme.palette.text,
fontSize: 18,
fontWeight: FontWeight.w500,
),
),
SizedBox(width: 8),
],
Text(
login,
style: TextStyle(
color: theme.palette.primary,
fontSize: 18,
fontWeight: FontWeight.w600,
color: theme.palette.text,
fontSize: 16,
),
),
],