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:
parent
1eafcff124
commit
cce67cccda
@ -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,
|
||||
|
@ -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),
|
||||
|
@ -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,
|
||||
|
@ -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(
|
||||
|
@ -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'],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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>[
|
||||
|
@ -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),
|
||||
],
|
||||
]),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user