1
0
mirror of https://github.com/git-touch/git-touch synced 2025-03-05 11:48:02 +01:00

fix: add white background

This commit is contained in:
Rongjian Zhang 2019-09-15 02:05:34 +08:00
parent 1eafcff124
commit cce67cccda
9 changed files with 110 additions and 109 deletions

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/models/theme.dart';
import 'package:provider/provider.dart';
import '../widgets/loading.dart';
@ -13,7 +12,6 @@ class RefreshScaffold<T> extends StatefulWidget {
final Future<T> Function() onRefresh;
final Widget Function(T payload) trailingBuilder;
// final List<Widget> Function(T payload) actionsBuilder;
final PreferredSizeWidget bottom;
RefreshScaffold({
@required this.title,
@ -21,7 +19,6 @@ class RefreshScaffold<T> extends StatefulWidget {
@required this.onRefresh,
this.trailingBuilder,
// this.actionsBuilder,
this.bottom,
});
@override
@ -103,7 +100,6 @@ class _RefreshScaffoldState<T> extends State<RefreshScaffold<T>> {
appBar: AppBar(
title: widget.title,
actions: _buildActions(),
bottom: widget.bottom,
),
body: RefreshIndicator(
onRefresh: _refresh,

View File

@ -204,12 +204,13 @@ class RepoScreen extends StatelessWidget {
),
],
),
borderView10,
Padding(
borderView1,
Container(
padding: const EdgeInsets.all(_languageBarPadding),
color: PrimerColors.white,
child: ClipRRect(
borderRadius: BorderRadius.circular(2),
child: Container(
child: SizedBox(
height: 10,
child: Row(
children: join(
@ -226,7 +227,7 @@ class RepoScreen extends StatelessWidget {
),
TableView(items: [
TableViewItem(
leftWidget: Icon(Octicons.code, size: 20),
leftIconData: Octicons.code,
text: Text('Code'),
rightWidget:
Text(filesize(payload['languages']['totalSize'] as int)),
@ -237,14 +238,14 @@ class RepoScreen extends StatelessWidget {
),
),
TableViewItem(
leftWidget: Icon(Octicons.issue_opened, size: 20),
leftIconData: Octicons.issue_opened,
text: Text('Issues'),
rightWidget:
Text(numberFormat.format(payload['issues']['totalCount'])),
screenBuilder: (_) => IssuesScreen(owner: owner, name: name),
),
TableViewItem(
leftWidget: Icon(Octicons.git_pull_request, size: 20),
leftIconData: Octicons.git_pull_request,
text: Text('Pull requests'),
rightWidget: Text(
numberFormat.format(payload['pullRequests']['totalCount'])),
@ -252,10 +253,10 @@ class RepoScreen extends StatelessWidget {
IssuesScreen(owner: owner, name: name, isPullRequest: true),
),
]),
borderView10,
borderView1,
TableView(items: [
TableViewItem(
leftWidget: Icon(Octicons.history, size: 20),
leftIconData: Octicons.history,
text: Text('Commits'),
rightWidget: Text(numberFormat.format(
payload['defaultBranchRef']['target']['history']
@ -263,7 +264,7 @@ class RepoScreen extends StatelessWidget {
screenBuilder: (_) => CommitsScreen(owner, name),
),
TableViewItem(
leftWidget: Icon(Octicons.law, size: 20),
leftIconData: Octicons.law,
text: Text('License'),
rightWidget: Text(payload['licenseInfo'] == null
? 'Unknown'
@ -271,7 +272,7 @@ class RepoScreen extends StatelessWidget {
payload['licenseInfo']['name'])),
),
]),
borderView10,
borderView1,
if (payload['object'] != null)
Container(
padding: EdgeInsets.all(16),

View File

@ -29,7 +29,7 @@ class SettingsScreen extends StatelessWidget {
bodyBuilder: () {
return Column(
children: <Widget>[
TableViewSeperator(),
borderView1,
TableView(headerText: 'ACCOUNTS', items: [
TableViewItem(
leftIconData: Icons.account_circle,
@ -37,7 +37,7 @@ class SettingsScreen extends StatelessWidget {
screenBuilder: (_) => LoginScreen(),
),
]),
TableViewSeperator(),
borderView1,
TableView(headerText: 'THEME', items: [
TableViewItem(
leftIconData: MaterialCommunityIcons.material_design,
@ -64,7 +64,7 @@ class SettingsScreen extends StatelessWidget {
hideRightChevron: true,
),
]),
TableViewSeperator(),
borderView1,
TableView(headerText: 'ABOUT', items: [
TableViewItem(
leftIconData: Octicons.code,

View File

@ -85,7 +85,7 @@ class UserScreen extends StatelessWidget {
if (items.isEmpty) return [];
return [
borderView10,
borderView1,
// Text('Pinned repositories'),
...join(
borderView,
@ -126,6 +126,7 @@ class UserScreen extends StatelessWidget {
return Container(
padding: EdgeInsets.all(10),
color: PrimerColors.white,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
reverse: true,
@ -197,14 +198,11 @@ class UserScreen extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(
padding: EdgeInsets.all(12),
child: UserItem(
login,
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
UserItem(
login,
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
borderView,
Row(children: <Widget>[
@ -232,9 +230,9 @@ class UserScreen extends StatelessWidget {
login: login, type: UsersScreenType.userFollowing),
),
]),
borderView10,
borderView1,
_buildContributions(contributions),
borderView10,
borderView1,
TableView(items: [
if (isNotNullOrEmpty(payload['company']))
TableViewItem(

View File

@ -1,15 +1,11 @@
import 'package:flutter/material.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart';
import 'package:primer/primer.dart';
import 'package:tuple/tuple.dart';
import '../scaffolds/list.dart';
import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart';
import '../utils/utils.dart';
import '../widgets/link.dart';
import '../screens/user.dart';
import '../widgets/avatar.dart';
enum UsersScreenType {
userFollowing,
@ -81,28 +77,18 @@ class UsersScreen extends StatelessWidget {
);
}
Widget _buildItem(payload) {
return Link(
screenBuilder: (_) => UserScreen(payload['login']),
child: Container(
padding: EdgeInsets.all(10),
child: UserItem(
payload['login'],
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
),
);
}
@override
Widget build(BuildContext context) {
return ListScaffold(
title: AppBarTitle('Users'),
onRefresh: () => _queryUsers(context),
onLoadMore: (cursor) => _queryUsers(context, cursor),
itemBuilder: _buildItem,
itemBuilder: (payload) => UserItem(
payload['login'],
name: payload['name'],
avatarUrl: payload['avatarUrl'],
bio: payload['bio'],
),
);
}
}

View File

@ -170,4 +170,4 @@ class BorderView extends StatelessWidget {
}
const borderView = BorderView();
const borderView10 = BorderView(height: 20, color: PrimerColors.gray100);
const borderView1 = BorderView(height: 20, color: PrimerColors.gray100);

View File

@ -75,8 +75,9 @@ class RepoItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
var widget = Padding(
var widget = Container(
padding: EdgeInsets.all(10),
color: PrimerColors.white,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[

View File

@ -4,16 +4,6 @@ import 'package:git_touch/utils/utils.dart';
import 'package:primer/primer.dart';
import 'link.dart';
class TableViewSeperator extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 20,
color: PrimerColors.gray100,
);
}
}
class TableViewItem {
final Widget text;
final IconData leftIconData;
@ -43,8 +33,12 @@ class TableView extends StatelessWidget {
Widget _buildItem(TableViewItem item) {
if (item == null) return null;
var leftWidget =
item.leftWidget ?? Icon(item.leftIconData, color: PrimerColors.blue500);
var leftWidget = item.leftWidget ??
Icon(
item.leftIconData,
color: PrimerColors.blue500,
size: 18,
);
// Container(
// width: 24,
// height: 24,
@ -56,19 +50,29 @@ class TableView extends StatelessWidget {
var widget = DefaultTextStyle(
style: TextStyle(fontSize: 16, color: PrimerColors.gray900),
overflow: TextOverflow.ellipsis,
child: SizedBox(
child: Container(
height: 44,
child: Row(children: [
SizedBox(width: 44, child: leftWidget),
Expanded(child: item.text),
if (item.rightWidget != null) item.rightWidget,
if ((item.onTap != null || item.screenBuilder != null) &&
!item.hideRightChevron) ...[
Icon(CupertinoIcons.right_chevron,
size: 24, color: PrimerColors.gray300),
SizedBox(width: 4),
color: PrimerColors.white,
child: Row(
children: [
SizedBox(width: 44, child: leftWidget),
Expanded(child: item.text),
if (item.rightWidget != null) ...[
DefaultTextStyle(
style: TextStyle(fontSize: 16, color: PrimerColors.gray500),
child: item.rightWidget,
),
SizedBox(width: 6)
],
if ((item.onTap != null || item.screenBuilder != null) &&
!item.hideRightChevron)
Icon(CupertinoIcons.right_chevron,
size: 20, color: PrimerColors.gray300)
else
SizedBox(width: 2),
SizedBox(width: 8),
],
]),
),
),
);

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:git_touch/screens/user.dart';
import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart';
class UserItem extends StatelessWidget {
@ -7,48 +9,61 @@ class UserItem extends StatelessWidget {
final String name;
final String avatarUrl;
final String bio;
final bool inUserScreen;
UserItem(this.login, {this.name, this.avatarUrl, this.bio});
UserItem(this.login,
{this.name, this.avatarUrl, this.bio, this.inUserScreen = false});
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Avatar(url: avatarUrl, size: 24),
SizedBox(width: 10),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Text(
name ?? login,
style: TextStyle(
color: PrimerColors.blue500,
fontSize: 18,
fontWeight: FontWeight.w600,
final widget = Container(
padding: EdgeInsets.all(10),
color: PrimerColors.white,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Avatar(url: avatarUrl, size: 24),
SizedBox(width: 10),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Text(
name ?? login,
style: TextStyle(
color: PrimerColors.blue500,
fontSize: 18,
fontWeight: FontWeight.w600,
),
),
),
SizedBox(width: 8),
Text(
login,
style: TextStyle(color: PrimerColors.gray700, fontSize: 16),
),
],
),
SizedBox(height: 6),
if (bio != null && bio.isNotEmpty)
Text(
bio,
style: TextStyle(color: PrimerColors.gray700, fontSize: 15),
SizedBox(width: 8),
Text(
login,
style:
TextStyle(color: PrimerColors.gray700, fontSize: 16),
),
],
),
],
),
)
],
SizedBox(height: 6),
if (bio != null && bio.isNotEmpty)
Text(
bio,
style: TextStyle(color: PrimerColors.gray700, fontSize: 15),
),
],
),
)
],
),
);
if (inUserScreen) {
return widget;
} else {
return Link(screenBuilder: (_) => UserScreen(login), child: widget);
}
}
}