1
0
mirror of https://github.com/git-touch/git-touch synced 2025-02-21 22:07:51 +01:00

refactor: app bar title

This commit is contained in:
Rongjian Zhang 2019-09-11 19:59:47 +08:00
parent b610af44a1
commit 2d6c8871f3
19 changed files with 47 additions and 19 deletions

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/link.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
@ -79,7 +80,7 @@ class CommitsScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListScaffold( return ListScaffold(
title: Text('Commits'), title: AppBarTitle('Commits'),
onRefresh: () => _query(context), onRefresh: () => _query(context),
onLoadMore: (cursor) => _query(context, cursor), onLoadMore: (cursor) => _query(context, cursor),
itemBuilder: (payload) { itemBuilder: (payload) {

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/scaffolds/simple.dart'; import 'package:git_touch/scaffolds/simple.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
class ImageView extends StatelessWidget { class ImageView extends StatelessWidget {
final ImageProvider imageProvider; final ImageProvider imageProvider;
@ -9,7 +10,7 @@ class ImageView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SimpleScaffold( return SimpleScaffold(
title: Text('Image preview'), title: AppBarTitle('Image preview'),
bodyBuilder: () { bodyBuilder: () {
return Container( return Container(
child: Image(image: imageProvider), child: Image(image: imageProvider),

View File

@ -340,7 +340,7 @@ mutation {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LongListScaffold( return LongListScaffold(
title: Text('$owner/$name #$number'), title: Text('Issue #$number'),
trailingBuilder: (payload) { trailingBuilder: (payload) {
return ActionButton( return ActionButton(
title: (isPullRequest ? 'Pull Request' : 'Issue') + ' Actions', title: (isPullRequest ? 'Pull Request' : 'Issue') + ' Actions',

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/list.dart'; import '../scaffolds/list.dart';
import '../utils/utils.dart'; import '../utils/utils.dart';
@ -136,7 +137,7 @@ class _IssuesScreenState extends State<IssuesScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListScaffold( return ListScaffold(
title: Text('Issues of $owner/$name'), title: AppBarTitle('Issues of $owner/$name'),
onRefresh: () => _query(), onRefresh: () => _query(),
onLoadMore: (cursor) => _query(cursor), onLoadMore: (cursor) => _query(cursor),
itemBuilder: _buildItem, itemBuilder: _buildItem,

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/simple.dart'; import '../scaffolds/simple.dart';
import '../widgets/link.dart'; import '../widgets/link.dart';
@ -92,7 +93,7 @@ class _LoginScreenState extends State<LoginScreen> {
}); });
return SimpleScaffold( return SimpleScaffold(
title: Text('Select account'), title: AppBarTitle('Select account'),
bodyBuilder: () { bodyBuilder: () {
if (settings.loading) { if (settings.loading) {
return Center(child: Loading()); return Center(child: Loading());

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/simple.dart'; import '../scaffolds/simple.dart';
@ -15,7 +16,7 @@ class _LoginGitlabScreenState extends State<LoginGitlabScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SimpleScaffold( return SimpleScaffold(
title: Text('Login to GitLab'), title: AppBarTitle('Login to GitLab'),
bodyBuilder: () { bodyBuilder: () {
return Column( return Column(
children: <Widget>[ children: <Widget>[

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:git_touch/models/notification.dart'; import 'package:git_touch/models/notification.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/list.dart'; import '../scaffolds/list.dart';
import '../widgets/event_item.dart'; import '../widgets/event_item.dart';
@ -67,7 +68,7 @@ class NewsScreenState extends State<NewsScreen> {
@override @override
Widget build(context) { Widget build(context) {
return ListScaffold<EventPayload, int>( return ListScaffold<EventPayload, int>(
title: Text('News'), title: AppBarTitle('News'),
itemBuilder: (payload) => EventItem(payload), itemBuilder: (payload) => EventItem(payload),
onRefresh: fetchEvents, onRefresh: fetchEvents,
onLoadMore: (page) => fetchEvents(page), onLoadMore: (page) => fetchEvents(page),

View File

@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import '../scaffolds/simple.dart'; import '../scaffolds/simple.dart';
class NotFoundScreen extends StatelessWidget { class NotFoundScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SimpleScaffold( return SimpleScaffold(
title: Text('Not Found'), title: AppBarTitle('Not Found'),
bodyBuilder: () { bodyBuilder: () {
return Text('Woops, This page is not implemented yet'); return Text('Woops, This page is not implemented yet');
}, },

View File

@ -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/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/refresh_stateless.dart'; import '../scaffolds/refresh_stateless.dart';
import 'package:git_touch/models/notification.dart'; import 'package:git_touch/models/notification.dart';
@ -196,7 +197,7 @@ $key: pullRequest(number: ${item.number}) {
), ),
); );
default: default:
return Text('Notifications'); return AppBarTitle('Notifications');
} }
} }

View File

@ -1,5 +1,6 @@
import 'package:flutter_highlight/themes/github.dart'; import 'package:flutter_highlight/themes/github.dart';
import 'package:git_touch/screens/image_view.dart'; import 'package:git_touch/screens/image_view.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/flutter_highlight.dart';
@ -145,7 +146,7 @@ class ObjectScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshScaffold( return RefreshScaffold(
title: Text(paths.join('/')), title: AppBarTitle(paths.join('/')),
onRefresh: () async { onRefresh: () async {
var data = await Provider.of<SettingsModel>(context).query('''{ var data = await Provider.of<SettingsModel>(context).query('''{
repository(owner: "$owner", name: "$name") { repository(owner: "$owner", name: "$name") {

View File

@ -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/app_bar_title.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:share/share.dart'; import 'package:share/share.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
@ -132,7 +133,7 @@ class _OrganizationScreenState extends State<OrganizationScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshScaffold( return RefreshScaffold(
onRefresh: query, onRefresh: query,
title: Text(widget.login), title: AppBarTitle(widget.login),
trailingBuilder: (payload) { trailingBuilder: (payload) {
return ActionButton(title: 'User Actions', actions: [ return ActionButton(title: 'User Actions', actions: [
MyAction( MyAction(

View File

@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:git_touch/screens/users.dart'; import 'package:git_touch/screens/users.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/table_view.dart'; import 'package:git_touch/widgets/table_view.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -112,7 +113,7 @@ class RepoScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshScaffold( return RefreshScaffold(
title: Text('Repository'), title: AppBarTitle('Repository'),
trailingBuilder: (data) { trailingBuilder: (data) {
var payload = data[0]; var payload = data[0];

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import '../scaffolds/list.dart'; import '../scaffolds/list.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -59,9 +60,8 @@ class _ReposScreenState extends State<ReposScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var title = widget.star ? 'stars' : 'repositories';
return ListScaffold( return ListScaffold(
title: Text('$login\'s $title'), title: AppBarTitle(widget.star ? 'Stars' : 'Repositories'),
onRefresh: () => _queryRepos(), onRefresh: () => _queryRepos(),
onLoadMore: (cursor) => _queryRepos(cursor), onLoadMore: (cursor) => _queryRepos(cursor),
itemBuilder: (payload) => RepoItem(payload), itemBuilder: (payload) => RepoItem(payload),

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import '../scaffolds/simple.dart'; import '../scaffolds/simple.dart';
@ -60,7 +61,7 @@ class _SearchScreenState extends State<SearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SimpleScaffold( return SimpleScaffold(
title: Text('Search GitHub Repositories'), title: AppBarTitle('Search GitHub Repositories'),
bodyBuilder: () { bodyBuilder: () {
return Column( return Column(
children: <Widget>[ children: <Widget>[

View File

@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:launch_review/launch_review.dart'; import 'package:launch_review/launch_review.dart';
@ -26,7 +27,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
var themeProvider = Provider.of<ThemeModel>(context); var themeProvider = Provider.of<ThemeModel>(context);
return SimpleScaffold( return SimpleScaffold(
title: Text('Settings'), title: AppBarTitle('Settings'),
bodyBuilder: () { bodyBuilder: () {
return Column( return Column(
children: <Widget>[ children: <Widget>[

View File

@ -1,6 +1,7 @@
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:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.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';
@ -41,7 +42,7 @@ class _TrendingScreenState extends State<TrendingScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshScaffold( return RefreshScaffold(
title: Text('Trending'), title: AppBarTitle('Trending'),
onRefresh: _fetchTrendingRepos, onRefresh: _fetchTrendingRepos,
bodyBuilder: (payload) { bodyBuilder: (payload) {
return Column( return Column(

View File

@ -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/app_bar_title.dart';
import 'package:git_touch/widgets/table_view.dart'; import 'package:git_touch/widgets/table_view.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@ -163,7 +164,7 @@ class _UserScreenState extends State<UserScreen> {
[query(), getContributions(widget.login)], [query(), getContributions(widget.login)],
); );
}, },
title: Text(widget.login), title: AppBarTitle(widget.login),
trailingBuilder: (data) { trailingBuilder: (data) {
var payload = data[0]; var payload = data[0];
if (widget.showSettings) { if (widget.showSettings) {

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import '../scaffolds/list.dart'; import '../scaffolds/list.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
@ -104,7 +105,7 @@ class _UsersScreenState extends State<UsersScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListScaffold( return ListScaffold(
title: Text('$login\'s $resource'), title: AppBarTitle(resource),
onRefresh: () => _queryUsers(), onRefresh: () => _queryUsers(),
onLoadMore: (cursor) => _queryUsers(cursor), onLoadMore: (cursor) => _queryUsers(cursor),
itemBuilder: _buildItem, itemBuilder: _buildItem,

View File

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
class AppBarTitle extends StatelessWidget {
final String text;
AppBarTitle(this.text);
@override
Widget build(BuildContext context) {
return Text(text, overflow: TextOverflow.ellipsis);
}
}