mirror of
https://github.com/pd4d10/git-touch.git
synced 2026-04-30 03:22:56 -05:00
feat: repo item style
This commit is contained in:
@@ -35,6 +35,7 @@ class RepoScreen extends StatelessWidget {
|
|||||||
__typename
|
__typename
|
||||||
login
|
login
|
||||||
url
|
url
|
||||||
|
avatarUrl
|
||||||
}
|
}
|
||||||
name
|
name
|
||||||
isPrivate
|
isPrivate
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:git_touch/utils/utils.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import '../scaffolds/refresh.dart';
|
import '../scaffolds/refresh.dart';
|
||||||
import '../widgets/repo_item.dart';
|
import '../widgets/repo_item.dart';
|
||||||
@@ -16,9 +17,7 @@ class _TrendingScreenState extends State<TrendingScreen> {
|
|||||||
|
|
||||||
return items.map((item) {
|
return items.map((item) {
|
||||||
return {
|
return {
|
||||||
'owner': {
|
'owner': {'login': item['author'], 'avatarUrl': item['avatar']},
|
||||||
'login': item['author'],
|
|
||||||
},
|
|
||||||
'name': item['name'],
|
'name': item['name'],
|
||||||
'description': item['description'],
|
'description': item['description'],
|
||||||
'stargazers': {
|
'stargazers': {
|
||||||
@@ -46,13 +45,11 @@ class _TrendingScreenState extends State<TrendingScreen> {
|
|||||||
onRefresh: _fetchTrendingRepos,
|
onRefresh: _fetchTrendingRepos,
|
||||||
bodyBuilder: (payload) {
|
bodyBuilder: (payload) {
|
||||||
return Column(
|
return Column(
|
||||||
children: payload.map<Widget>((repo) {
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
return Container(
|
children: join(
|
||||||
decoration: BoxDecoration(
|
BorderView(),
|
||||||
border: Border(bottom: BorderSide(color: Colors.black12))),
|
payload.map<Widget>((item) => RepoItem(item)).toList(),
|
||||||
child: RepoItem(repo),
|
),
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ var warningSpan =
|
|||||||
var repoChunk = '''
|
var repoChunk = '''
|
||||||
owner {
|
owner {
|
||||||
login
|
login
|
||||||
|
avatarUrl
|
||||||
}
|
}
|
||||||
name
|
name
|
||||||
description
|
description
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:git_touch/widgets/avatar.dart';
|
||||||
import 'package:primer/primer.dart';
|
import 'package:primer/primer.dart';
|
||||||
import '../utils/utils.dart';
|
import '../utils/utils.dart';
|
||||||
import '../screens/repo.dart';
|
import '../screens/repo.dart';
|
||||||
@@ -29,56 +30,87 @@ class RepoItem extends StatelessWidget {
|
|||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
Avatar(url: payload['owner']['avatarUrl'], size: 12),
|
||||||
|
SizedBox(width: 8),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: join(SizedBox(height: 8), <Widget>[
|
||||||
Text(
|
Text(
|
||||||
(showOwner ? (payload['owner']['login'] + '/') : '') +
|
(showOwner ? (payload['owner']['login'] + ' / ') : '') +
|
||||||
payload['name'],
|
payload['name'],
|
||||||
style: TextStyle(fontWeight: FontWeight.w600, fontSize: 16),
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16,
|
||||||
|
color: PrimerColors.blue500,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 6),
|
payload['description'] == null ||
|
||||||
Text(
|
(payload['description'] as String).isEmpty
|
||||||
payload['description'] ?? 'No description provided yet',
|
? null
|
||||||
style: TextStyle(color: PrimerColors.gray600, fontSize: 14),
|
: Text(
|
||||||
),
|
payload['description'],
|
||||||
SizedBox(height: 6),
|
style: TextStyle(
|
||||||
|
color: PrimerColors.gray600, fontSize: 14),
|
||||||
|
),
|
||||||
DefaultTextStyle(
|
DefaultTextStyle(
|
||||||
style: TextStyle(color: PrimerColors.gray600, fontSize: 13),
|
style: TextStyle(
|
||||||
|
color: PrimerColors.gray600,
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Icon(Octicons.star,
|
SizedBox(
|
||||||
size: 14, color: PrimerColors.gray600),
|
width: 100,
|
||||||
Text(payload['stargazers']['totalCount'].toString()),
|
child: Row(children: <Widget>[
|
||||||
SizedBox(width: 16),
|
Container(
|
||||||
Icon(Octicons.repo_forked,
|
width: 10,
|
||||||
size: 14, color: PrimerColors.gray600),
|
height: 10,
|
||||||
Text(payload['forks']['totalCount'].toString()),
|
decoration: BoxDecoration(
|
||||||
SizedBox(width: 16),
|
color: convertColor(
|
||||||
payload['primaryLanguage'] == null
|
payload['primaryLanguage'] == null
|
||||||
? Container()
|
? null
|
||||||
: Row(children: <Widget>[
|
: payload['primaryLanguage']['color']),
|
||||||
Container(
|
shape: BoxShape.circle,
|
||||||
width: 10,
|
),
|
||||||
height: 10,
|
),
|
||||||
decoration: BoxDecoration(
|
SizedBox(width: 4),
|
||||||
color: convertColor(
|
Text(payload['primaryLanguage'] == null
|
||||||
payload['primaryLanguage']['color']),
|
? 'Unknown'
|
||||||
shape: BoxShape.circle,
|
: payload['primaryLanguage']['name']),
|
||||||
),
|
]),
|
||||||
),
|
),
|
||||||
Padding(padding: EdgeInsets.only(left: 4)),
|
SizedBox(
|
||||||
Text(payload['primaryLanguage']['name']),
|
width: 100,
|
||||||
]),
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Icon(Octicons.star,
|
||||||
|
size: 14, color: PrimerColors.gray600),
|
||||||
|
Text(
|
||||||
|
payload['stargazers']['totalCount'].toString()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 100,
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Icon(Octicons.repo_forked,
|
||||||
|
size: 14, color: PrimerColors.gray600),
|
||||||
|
Text(payload['forks']['totalCount'].toString())
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
]),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Padding(padding: EdgeInsets.only(left: 4)),
|
Icon(_buildIconData(), size: 18, color: PrimerColors.gray600),
|
||||||
Icon(_buildIconData(), size: 20, color: Colors.black54),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user