From e6a6b026f6f6e50de9c8b5603589496c67927c10 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Wed, 2 Oct 2019 16:09:54 +0800 Subject: [PATCH] refactor: common styles --- lib/models/code.dart | 2 +- lib/scaffolds/list_stateful.dart | 2 +- lib/scaffolds/long_list.dart | 6 +++--- lib/scaffolds/single.dart | 9 ++++++--- lib/screens/code_theme.dart | 2 +- lib/screens/commits.dart | 2 +- lib/screens/credits.dart | 4 ++-- lib/screens/issue.dart | 4 ++-- lib/screens/login.dart | 2 +- lib/screens/object.dart | 4 ++-- lib/screens/organization.dart | 8 ++++---- lib/screens/repository.dart | 18 +++++++++--------- lib/screens/settings.dart | 8 +++++--- lib/screens/trending.dart | 2 +- lib/screens/trending_backup.dart | 2 +- lib/screens/user.dart | 14 +++++++------- lib/utils/utils.dart | 16 ++++++++-------- lib/widgets/event_item.dart | 4 ++-- lib/widgets/issue_item.dart | 2 +- lib/widgets/markdown_view.dart | 2 +- lib/widgets/repository_item.dart | 2 +- lib/widgets/table_view.dart | 5 ++--- lib/widgets/timeline_item.dart | 2 +- lib/widgets/user_item.dart | 2 +- 24 files changed, 64 insertions(+), 60 deletions(-) diff --git a/lib/models/code.dart b/lib/models/code.dart index 3d92507..4fd9c80 100644 --- a/lib/models/code.dart +++ b/lib/models/code.dart @@ -27,7 +27,7 @@ class CodeModel with ChangeNotifier { int get fontSize => _fontSize; String get fontFamily => _fontFamily; String get fontFamilyUsed => - _fontFamily == 'System' ? monospaceFont : _fontFamily; + _fontFamily == 'System' ? CommonStyle.monospace : _fontFamily; init() async { var prefs = await SharedPreferences.getInstance(); diff --git a/lib/scaffolds/list_stateful.dart b/lib/scaffolds/list_stateful.dart index 4ad4380..2ef50a4 100644 --- a/lib/scaffolds/list_stateful.dart +++ b/lib/scaffolds/list_stateful.dart @@ -142,7 +142,7 @@ class _ListStatefulScaffoldState } if (index % 2 == 1) { - return borderView; + return CommonStyle.border; } return widget.itemBuilder(items[index ~/ 2]); diff --git a/lib/scaffolds/long_list.dart b/lib/scaffolds/long_list.dart index e92eb92..cee6af6 100644 --- a/lib/scaffolds/long_list.dart +++ b/lib/scaffolds/long_list.dart @@ -103,7 +103,7 @@ class _LongListScaffoldState extends State> { Widget _buildItem(BuildContext context, int index) { if (index % 2 == 1) { - return borderView; + return CommonStyle.border; } int realIndex = index ~/ 2; @@ -115,7 +115,7 @@ class _LongListScaffoldState extends State> { payload.leadingItems.length + payload.trailingItems.length; return Container( - padding: commonItemPadding, + padding: CommonStyle.padding, decoration: BoxDecoration( image: DecorationImage( image: ExactAssetImage('images/progressive-disclosure-line.png', @@ -127,7 +127,7 @@ class _LongListScaffoldState extends State> { child: Link( onTap: _loadMore, child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, decoration: BoxDecoration( border: Border.all(color: Colors.black12), ), diff --git a/lib/scaffolds/single.dart b/lib/scaffolds/single.dart index 0c9e920..1daa351 100644 --- a/lib/scaffolds/single.dart +++ b/lib/scaffolds/single.dart @@ -4,12 +4,14 @@ import 'package:git_touch/scaffolds/common.dart'; class SingleScaffold extends StatelessWidget { final Widget title; final Widget body; - final Widget trailing; + final Widget action; + final Color backgroundColor; SingleScaffold({ @required this.title, @required this.body, - this.trailing, + this.action, + this.backgroundColor, }); @override @@ -17,7 +19,8 @@ class SingleScaffold extends StatelessWidget { return CommonScaffold( title: title, body: Scrollbar(child: SingleChildScrollView(child: body)), - action: trailing, + action: action, + backgroundColor: backgroundColor, ); } } diff --git a/lib/screens/code_theme.dart b/lib/screens/code_theme.dart index 90ff0fa..6bd398a 100644 --- a/lib/screens/code_theme.dart +++ b/lib/screens/code_theme.dart @@ -96,7 +96,7 @@ class CodeThemeScreen extends StatelessWidget { fontSize: codeProvider.fontSize.toDouble(), fontFamily: codeProvider.fontFamilyUsed, ), - padding: commonItemPadding, + padding: CommonStyle.padding, ), ) ], diff --git a/lib/screens/commits.dart b/lib/screens/commits.dart index 119d547..d2005da 100644 --- a/lib/screens/commits.dart +++ b/lib/screens/commits.dart @@ -90,7 +90,7 @@ class CommitsScreen extends StatelessWidget { return Link( url: payload['url'], child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/screens/credits.dart b/lib/screens/credits.dart index eeb73b8..eee88a7 100644 --- a/lib/screens/credits.dart +++ b/lib/screens/credits.dart @@ -44,7 +44,7 @@ class CreditsScreen extends StatelessWidget { title: Text('Credits'), body: Column( children: [ - verticalGap, + CommonStyle.verticalGap, TableView( headerText: 'packages', items: projects.map((t) { @@ -54,7 +54,7 @@ class CreditsScreen extends StatelessWidget { ); }), ), - verticalGap, + CommonStyle.verticalGap, TableView( headerText: 'fonts', items: fonts.map((font) { diff --git a/lib/screens/issue.dart b/lib/screens/issue.dart index 670d868..5acb86a 100644 --- a/lib/screens/issue.dart +++ b/lib/screens/issue.dart @@ -355,7 +355,7 @@ mutation { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -383,7 +383,7 @@ mutation { ], ), ), - borderView, + CommonStyle.border, ], ); }, diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 3895a4d..507a2ab 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -25,7 +25,7 @@ class _LoginScreenState extends State { settings.setActiveAccountIndex(index); }, child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, decoration: BoxDecoration( border: Border(bottom: BorderSide(color: Colors.black12)), ), diff --git a/lib/screens/object.dart b/lib/screens/object.dart index 3eb18f5..1dabd1e 100644 --- a/lib/screens/object.dart +++ b/lib/screens/object.dart @@ -116,7 +116,7 @@ class ObjectScreen extends StatelessWidget { case 'md': case 'markdown': return Padding( - padding: commonItemPadding, + padding: CommonStyle.padding, child: MarkdownView(payload['text']), ); case 'png': @@ -133,7 +133,7 @@ class ObjectScreen extends StatelessWidget { payload['text'], language: _language, theme: themeMap[codeProvider.theme], - padding: commonItemPadding, + padding: CommonStyle.padding, textStyle: TextStyle( fontSize: codeProvider.fontSize.toDouble(), fontFamily: codeProvider.fontFamilyUsed), diff --git a/lib/screens/organization.dart b/lib/screens/organization.dart index 45532c2..5385161 100644 --- a/lib/screens/organization.dart +++ b/lib/screens/organization.dart @@ -39,10 +39,10 @@ class OrganizationScreen extends StatelessWidget { if (items.isEmpty) return []; return [ - verticalGap, + CommonStyle.verticalGap, if (title != null) TableViewHeader(title), ...join( - borderView, + CommonStyle.border, items.map((item) { return RepositoryItem(item); }).toList(), @@ -112,7 +112,7 @@ class OrganizationScreen extends StatelessWidget { avatarUrl: data['avatarUrl'], bio: data['description'], ), - borderView, + CommonStyle.border, Row(children: [ EntryItem( count: data['pinnableItems']['totalCount'], @@ -126,7 +126,7 @@ class OrganizationScreen extends StatelessWidget { screenBuilder: (context) => UsersScreen.members(login), ), ]), - verticalGap, + CommonStyle.verticalGap, TableView( hasIcon: true, items: [ diff --git a/lib/screens/repository.dart b/lib/screens/repository.dart index 08d9b4c..9ae2172 100644 --- a/lib/screens/repository.dart +++ b/lib/screens/repository.dart @@ -211,8 +211,8 @@ class RepositoryScreen extends StatelessWidget { var readme = payload.data[1] as String; final langWidth = MediaQuery.of(context).size.width - - commonItemPadding.left - - commonItemPadding.right - + CommonStyle.padding.left - + CommonStyle.padding.right - (data['languages']['edges'] as List).length + 1; @@ -220,7 +220,7 @@ class RepositoryScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ RepositoryItem(data, inRepoScreen: true), - borderView, + CommonStyle.border, Row( children: [ EntryItem( @@ -241,11 +241,11 @@ class RepositoryScreen extends StatelessWidget { ), ], ), - verticalGap, + CommonStyle.verticalGap, if ((data['languages']['edges'] as List).isNotEmpty) Container( color: Colors.white, - padding: commonItemPadding.copyWith(top: 8, bottom: 8), + padding: CommonStyle.padding.copyWith(top: 8, bottom: 8), child: ClipRRect( borderRadius: BorderRadius.circular(2), child: SizedBox( @@ -304,7 +304,7 @@ class RepositoryScreen extends StatelessWidget { ), ], ), - verticalGap, + CommonStyle.verticalGap, TableView( hasIcon: true, items: [ @@ -366,14 +366,14 @@ class RepositoryScreen extends StatelessWidget { ), ], ), - verticalGap, + CommonStyle.verticalGap, if (readme != null) Container( - padding: commonItemPadding, + padding: CommonStyle.padding, color: Colors.white, child: MarkdownView(readme), ), - verticalGap, + CommonStyle.verticalGap, ], ); }, diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 9ec9a16..0003db2 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -6,6 +6,7 @@ import 'package:git_touch/screens/credits.dart'; import 'package:git_touch/screens/repository.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; +import 'package:primer/primer.dart'; import 'package:provider/provider.dart'; import 'package:launch_review/launch_review.dart'; import '../widgets/table_view.dart'; @@ -23,16 +24,17 @@ class SettingsScreen extends StatelessWidget { return SingleScaffold( title: AppBarTitle('Settings'), + backgroundColor: PrimerColors.gray000, body: Column( children: [ - verticalGap, + CommonStyle.verticalGap, TableView(headerText: 'ACCOUNTS', items: [ TableViewItem( text: Text('Switch to another account'), screenBuilder: (_) => LoginScreen(), ), ]), - verticalGap, + CommonStyle.verticalGap, TableView(headerText: 'THEME', items: [ TableViewItem( text: Text('Material'), @@ -57,7 +59,7 @@ class SettingsScreen extends StatelessWidget { hideRightChevron: true, ), ]), - verticalGap, + CommonStyle.verticalGap, TableView(headerText: 'ABOUT', items: [ TableViewItem( text: Text('Source Code'), diff --git a/lib/screens/trending.dart b/lib/screens/trending.dart index 3fa128b..ee2e74e 100644 --- a/lib/screens/trending.dart +++ b/lib/screens/trending.dart @@ -23,7 +23,7 @@ class TrendingScreen extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: join( - borderView, + CommonStyle.border, payload.map((item) { switch (activeTab) { case 0: diff --git a/lib/screens/trending_backup.dart b/lib/screens/trending_backup.dart index 97ff9e8..2f08938 100644 --- a/lib/screens/trending_backup.dart +++ b/lib/screens/trending_backup.dart @@ -87,7 +87,7 @@ class _TrendingScreenState extends State { onRefresh: _refresh, body: Column( crossAxisAlignment: CrossAxisAlignment.stretch, - children: join(borderView, _buildItems()).toList(), + children: join(CommonStyle.border, _buildItems()).toList(), ), activeTab: _activeTab, onTabSwitch: (int index) { diff --git a/lib/screens/user.dart b/lib/screens/user.dart index d6167e6..eedeb47 100644 --- a/lib/screens/user.dart +++ b/lib/screens/user.dart @@ -86,10 +86,10 @@ class UserScreen extends StatelessWidget { if (items.isEmpty) return []; return [ - verticalGap, + CommonStyle.verticalGap, if (title != null) TableViewHeader(title), ...join( - borderView, + CommonStyle.border, items.map((item) { return RepositoryItem(item); }).toList(), @@ -127,7 +127,7 @@ class UserScreen extends StatelessWidget { return Container( color: Colors.white, - padding: commonItemPadding, + padding: CommonStyle.padding, child: SingleChildScrollView( scrollDirection: Axis.horizontal, reverse: true, @@ -191,7 +191,7 @@ class UserScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ UserItem.fromData(data, inUserScreen: true), - borderView, + CommonStyle.border, Row(children: [ EntryItem( count: data['repositories']['totalCount'], @@ -214,9 +214,9 @@ class UserScreen extends StatelessWidget { screenBuilder: (context) => UsersScreen.following(login), ), ]), - verticalGap, + CommonStyle.verticalGap, _buildContributions(contributions), - verticalGap, + CommonStyle.verticalGap, TableView( hasIcon: true, items: [ @@ -261,7 +261,7 @@ class UserScreen extends StatelessWidget { ], ), ..._buildRepos(data), - verticalGap, + CommonStyle.verticalGap, ], ); }, diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index af37495..a2b5ccc 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -12,8 +12,6 @@ import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; export 'package:flutter_vector_icons/flutter_vector_icons.dart'; -final monospaceFont = Platform.isIOS ? 'Menlo' : 'monospace'; // FIXME: - class StorageKeys { static const accounts = 'accounts'; static const account = 'account'; @@ -22,6 +20,13 @@ class StorageKeys { static const newsFilter = 'news.filter'; } +class CommonStyle { + static const padding = EdgeInsets.all(12); + static const border = BorderView(); + static const verticalGap = SizedBox(height: 18); + static final monospace = Platform.isIOS ? 'Menlo' : 'monospace'; // FIXME: +} + Color convertColor(String cssHex) { if (cssHex == null) { return Color(0xffcccccc); // Default color @@ -124,9 +129,6 @@ bool isNotNullOrEmpty(String text) { return text != null && text.isNotEmpty; } -const borderView = BorderView(); -const verticalGap = SizedBox(height: 18); - String getBranchQueryKey(String branch, {bool withParams = false}) { if (branch == null) return 'defaultBranchRef'; return 'ref' + (withParams ? '(qualifiedName: "$branch")' : ''); @@ -155,7 +157,7 @@ class PrimerBranchName extends StatelessWidget { color: PrimerColors.blue500, fontSize: 12, height: 1, - fontFamily: monospaceFont, + fontFamily: CommonStyle.monospace, ), ), ); @@ -171,5 +173,3 @@ launchUrl(String url) async { // TODO: fallback } } - -const commonItemPadding = EdgeInsets.all(12); diff --git a/lib/widgets/event_item.dart b/lib/widgets/event_item.dart index 81c7626..a78c2c6 100644 --- a/lib/widgets/event_item.dart +++ b/lib/widgets/event_item.dart @@ -72,7 +72,7 @@ class EventItem extends StatelessWidget { screenBuilder: screenBuilder, url: url, child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -309,7 +309,7 @@ class EventItem extends StatelessWidget { style: TextStyle( color: PrimerColors.blue500, fontSize: 13, - fontFamily: monospaceFont, + fontFamily: CommonStyle.monospace, ), ), SizedBox(width: 6), diff --git a/lib/widgets/issue_item.dart b/lib/widgets/issue_item.dart index ab4d4e6..39adf89 100644 --- a/lib/widgets/issue_item.dart +++ b/lib/widgets/issue_item.dart @@ -49,7 +49,7 @@ class IssueItem extends StatelessWidget { ); }, child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, // color: payload.unread ? Colors.white : Colors.black12, child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/widgets/markdown_view.dart b/lib/widgets/markdown_view.dart index a75de24..a9b22d3 100644 --- a/lib/widgets/markdown_view.dart +++ b/lib/widgets/markdown_view.dart @@ -78,7 +78,7 @@ class MarkdownView extends StatelessWidget { code: _basicStyle.copyWith( fontSize: 16 * 0.85, height: 1.45, - fontFamily: monospaceFont, + fontFamily: CommonStyle.monospace, ), h1: _hStyle.copyWith(fontSize: 32), h2: _hStyle.copyWith(fontSize: 24), diff --git a/lib/widgets/repository_item.dart b/lib/widgets/repository_item.dart index 90e6148..b0a13ad 100644 --- a/lib/widgets/repository_item.dart +++ b/lib/widgets/repository_item.dart @@ -126,7 +126,7 @@ class RepositoryItem extends StatelessWidget { ? null : (_) => RepositoryScreen(payload['owner']['login'], payload['name']), child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/widgets/table_view.dart b/lib/widgets/table_view.dart index 2ec1da4..04a6b13 100644 --- a/lib/widgets/table_view.dart +++ b/lib/widgets/table_view.dart @@ -13,7 +13,6 @@ class TableViewHeader extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - color: PrimerColors.gray100, padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), child: Text( title.toUpperCase(), @@ -117,10 +116,10 @@ class TableView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ if (headerText != null) TableViewHeader(headerText), - borderView, + CommonStyle.border, ...join(BorderView(leftPadding: _leftPadding), items.map(_buildItem).toList()), - borderView, + CommonStyle.border, ], ); } diff --git a/lib/widgets/timeline_item.dart b/lib/widgets/timeline_item.dart index ba9a2d4..de290e8 100644 --- a/lib/widgets/timeline_item.dart +++ b/lib/widgets/timeline_item.dart @@ -302,7 +302,7 @@ class TimelineItem extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: _buildByType(context), ); } diff --git a/lib/widgets/user_item.dart b/lib/widgets/user_item.dart index 7f73290..0e755e6 100644 --- a/lib/widgets/user_item.dart +++ b/lib/widgets/user_item.dart @@ -47,7 +47,7 @@ class UserItem extends StatelessWidget { : (_) => isOrganization ? OrganizationScreen(login) : UserScreen(login), child: Container( - padding: commonItemPadding, + padding: CommonStyle.padding, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [