refactor: user item style

This commit is contained in:
Rongjian Zhang 2019-09-27 21:02:55 +08:00
parent 62c53e543d
commit a513dfb7c6
7 changed files with 23 additions and 33 deletions

View File

@ -119,7 +119,7 @@ class OrganizationScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
UserItem( UserItem(
login, login: login,
name: payload['name'], name: payload['name'],
avatarUrl: payload['avatarUrl'], avatarUrl: payload['avatarUrl'],
bio: payload['description'], bio: payload['description'],

View File

@ -64,7 +64,6 @@ class _SearchScreenState extends State<SearchScreen> {
} }
... on User { ... on User {
$userGqlChunk $userGqlChunk
login
} }
} }
} }

View File

@ -51,7 +51,7 @@ class TrendingScreen extends StatelessWidget {
}); });
case 1: case 1:
return UserItem( return UserItem(
item['username'], login: item['username'],
name: item['name'], name: item['name'],
avatarUrl: item['avatar'], avatarUrl: item['avatar'],
bio: '', bio: '',

View File

@ -30,7 +30,7 @@ class _TrendingScreenState extends State<TrendingScreen> {
switch (_activeTab) { switch (_activeTab) {
case 0: case 0:
return _userItems?.map((item) => UserItem( return _userItems?.map((item) => UserItem(
item['username'], login: item['username'],
name: item['name'], name: item['name'],
avatarUrl: item['avatar'], avatarUrl: item['avatar'],
bio: '', bio: '',

View File

@ -30,9 +30,7 @@ class UserScreen extends StatelessWidget {
var data = await Provider.of<AuthModel>(context).query(''' var data = await Provider.of<AuthModel>(context).query('''
{ {
user(login: "$login") { user(login: "$login") {
name $userGqlChunk
avatarUrl
bio
company company
location location
email email
@ -201,12 +199,7 @@ class UserScreen extends StatelessWidget {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
UserItem( UserItem.fromData(payload, inUserScreen: true),
login,
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
borderView, borderView,
Row(children: <Widget>[ Row(children: <Widget>[
EntryItem( EntryItem(

View File

@ -49,10 +49,7 @@ class UsersScreen extends StatelessWidget {
endCursor endCursor
} }
nodes { nodes {
name $userGqlChunk
login
avatarUrl
bio
} }
} }
} }
@ -73,12 +70,7 @@ class UsersScreen extends StatelessWidget {
title: AppBarTitle(title), title: AppBarTitle(title),
onRefresh: () => _queryUsers(context), onRefresh: () => _queryUsers(context),
onLoadMore: (cursor) => _queryUsers(context, cursor), onLoadMore: (cursor) => _queryUsers(context, cursor),
itemBuilder: (payload) => UserItem( itemBuilder: (payload) => UserItem.fromData(payload),
payload['login'],
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
); );
} }
} }

View File

@ -7,6 +7,7 @@ import 'package:git_touch/widgets/text_contains_organization.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
const userGqlChunk = ''' const userGqlChunk = '''
login
name name
avatarUrl avatarUrl
bio bio
@ -20,20 +21,22 @@ class UserItem extends StatelessWidget {
final bool inUserScreen; final bool inUserScreen;
final bool isOrganization; final bool isOrganization;
UserItem( UserItem({
this.login, { this.login,
this.name, this.name,
this.avatarUrl, this.avatarUrl,
this.bio, this.bio,
this.inUserScreen = false, this.inUserScreen = false,
this.isOrganization = false, this.isOrganization = false,
}); });
UserItem.fromData(data, {this.isOrganization = false}) UserItem.fromData(
: login = data['login'], data, {
this.isOrganization = false,
this.inUserScreen = false,
}) : login = data['login'],
name = data['name'], name = data['name'],
avatarUrl = data['avatarUrl'], avatarUrl = data['avatarUrl'],
bio = data['bio'], bio = data['bio'];
inUserScreen = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -55,15 +58,16 @@ class UserItem extends StatelessWidget {
name ?? login, name ?? login,
style: TextStyle( style: TextStyle(
color: PrimerColors.blue500, color: PrimerColors.blue500,
fontSize: 18, fontSize: inUserScreen ? 18 : 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
SizedBox(width: 8), SizedBox(width: 8),
Text( Text(
login, login,
style: style: TextStyle(
TextStyle(color: PrimerColors.gray700, fontSize: 16), color: PrimerColors.gray700,
fontSize: inUserScreen ? 16 : 14),
), ),
], ],
), ),
@ -71,7 +75,9 @@ class UserItem extends StatelessWidget {
if (bio != null && bio.isNotEmpty) if (bio != null && bio.isNotEmpty)
TextContainsOrganization( TextContainsOrganization(
bio, bio,
style: TextStyle(color: PrimerColors.gray700, fontSize: 15), style: TextStyle(
color: PrimerColors.gray700,
fontSize: inUserScreen ? 15 : 14),
), ),
], ],
), ),