refactor: drop material widgets

This commit is contained in:
Rongjian Zhang 2022-09-17 20:35:45 +08:00
parent 084bc3c86a
commit 4af23c160d
140 changed files with 626 additions and 906 deletions

View File

@ -1,5 +1,4 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
@ -48,37 +47,15 @@ class MyApp extends StatelessWidget {
return Container( return Container(
key: auth.rootKey, key: auth.rootKey,
child: theme.theme == AppThemeType.cupertino child: CupertinoApp.router(
? CupertinoApp.router( routeInformationProvider: router.routeInformationProvider,
routeInformationProvider: router.routeInformationProvider, routeInformationParser: router.routeInformationParser,
routeInformationParser: router.routeInformationParser, routerDelegate: router.routerDelegate,
routerDelegate: router.routerDelegate, theme: CupertinoThemeData(brightness: theme.brightness),
theme: CupertinoThemeData(brightness: theme.brightness), localizationsDelegates: AppLocalizations.localizationsDelegates,
localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales,
supportedLocales: AppLocalizations.supportedLocales, localeListResolutionCallback: localeListResolutionCallback,
localeListResolutionCallback: localeListResolutionCallback, ),
)
: MaterialApp.router(
routeInformationProvider: router.routeInformationProvider,
routeInformationParser: router.routeInformationParser,
routerDelegate: router.routerDelegate,
theme: ThemeData(
brightness: theme.brightness,
primaryColor:
theme.brightness == Brightness.dark ? null : Colors.white,
scaffoldBackgroundColor: theme.palette.background,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
},
),
colorScheme: ColorScheme.fromSwatch()
.copyWith(secondary: theme.palette.primary),
),
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
localeListResolutionCallback: localeListResolutionCallback,
),
); );
} }
} }

View File

@ -1,5 +1,4 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/notification.dart'; import 'package:git_touch/models/notification.dart';
@ -247,56 +246,35 @@ class _HomeState extends State<Home> {
final navigationItems = _buildNavigationItems(auth.activeAccount!.platform); final navigationItems = _buildNavigationItems(auth.activeAccount!.platform);
switch (theme.theme) { return WillPopScope(
case AppThemeType.cupertino: onWillPop: () async {
return WillPopScope( return !(await getNavigatorKey(auth.activeTab)
onWillPop: () async { .currentState
return !(await getNavigatorKey(auth.activeTab) ?.maybePop())!;
.currentState },
?.maybePop())!; child: CupertinoTabScaffold(
}, tabBuilder: (context, index) {
child: CupertinoTabScaffold( return CupertinoTabView(
tabBuilder: (context, index) { navigatorKey: getNavigatorKey(index),
return CupertinoTabView( builder: (context) {
navigatorKey: getNavigatorKey(index), return _buildScreen(index);
builder: (context) {
return _buildScreen(index);
},
);
}, },
tabBar: CupertinoTabBar( );
items: navigationItems, },
currentIndex: auth.activeTab, tabBar: CupertinoTabBar(
onTap: (index) { items: navigationItems,
if (auth.activeTab == index) { currentIndex: auth.activeTab,
getNavigatorKey(index) onTap: (index) {
.currentState if (auth.activeTab == index) {
?.popUntil((route) => route.isFirst); getNavigatorKey(index)
} else { .currentState
auth.setActiveTab(index); ?.popUntil((route) => route.isFirst);
} } else {
},
),
),
);
default:
return Scaffold(
body: IndexedStack(
index: auth.activeTab,
children: [
for (var i = 0; i < navigationItems.length; i++) _buildScreen(i)
],
),
bottomNavigationBar: BottomNavigationBar(
selectedItemColor: theme.palette.primary,
items: navigationItems,
currentIndex: auth.activeTab,
type: BottomNavigationBarType.fixed,
onTap: (int index) {
auth.setActiveTab(index); auth.setActiveTab(index);
}, }
), },
); ),
} ),
);
} }
} }

View File

@ -1,10 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/app.dart'; import 'package:git_touch/app.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/code.dart'; import 'package:git_touch/models/code.dart';
import 'package:git_touch/models/notification.dart'; import 'package:git_touch/models/notification.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/sentry_flutter.dart';

View File

@ -1,21 +1,23 @@
import 'dart:convert';
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
// import 'package:in_app_review/in_app_review.dart'; import 'package:fimber/fimber.dart';
import 'package:universal_io/io.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:github/github.dart'; import 'package:github/github.dart';
import 'package:gql_http_link/gql_http_link.dart'; import 'package:gql_http_link/gql_http_link.dart';
import 'package:fimber/fimber.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:uni_links/uni_links.dart';
import 'package:nanoid/nanoid.dart'; import 'package:nanoid/nanoid.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:uni_links/uni_links.dart';
// import 'package:in_app_review/in_app_review.dart';
import 'package:universal_io/io.dart';
import 'package:url_launcher/url_launcher.dart';
import '../utils/utils.dart'; import '../utils/utils.dart';
import 'account.dart'; import 'account.dart';
import 'gitlab.dart'; import 'gitlab.dart';

View File

@ -1,5 +1,5 @@
import 'package:fimber/fimber.dart'; import 'package:fimber/fimber.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_highlight/theme_map.dart'; import 'package:flutter_highlight/theme_map.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

View File

@ -2,7 +2,6 @@ import 'dart:async';
import 'package:fimber/fimber.dart'; import 'package:fimber/fimber.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';

View File

@ -1,5 +1,4 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -7,13 +6,11 @@ class CommonScaffold extends StatelessWidget {
final Widget title; final Widget title;
final Widget body; final Widget body;
final Widget? action; final Widget? action;
final PreferredSizeWidget? bottom;
const CommonScaffold({ const CommonScaffold({
required this.title, required this.title,
required this.body, required this.body,
this.action, this.action,
this.bottom,
}); });
@override @override
@ -22,26 +19,12 @@ class CommonScaffold extends StatelessWidget {
// FIXME: A hack to get brightness before MaterialApp been built // FIXME: A hack to get brightness before MaterialApp been built
theme.setSystemBrightness(MediaQuery.of(context).platformBrightness); theme.setSystemBrightness(MediaQuery.of(context).platformBrightness);
switch (theme.theme) { return CupertinoPageScaffold(
case AppThemeType.cupertino: navigationBar: CupertinoNavigationBar(
return CupertinoPageScaffold( middle: title,
navigationBar: CupertinoNavigationBar( trailing: action,
middle: title, ),
trailing: action, child: SafeArea(child: body),
), );
child: SafeArea(child: body),
);
default:
return Scaffold(
appBar: AppBar(
title: title,
actions: [
if (action != null) action!,
],
bottom: bottom,
),
body: body,
);
}
} }
} }

View File

@ -1,12 +1,10 @@
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/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:provider/provider.dart'; import 'package:git_touch/widgets/empty.dart';
import 'package:git_touch/widgets/error_reload.dart'; import 'package:git_touch/widgets/error_reload.dart';
import 'package:git_touch/widgets/loading.dart'; import 'package:git_touch/widgets/loading.dart';
import 'package:git_touch/widgets/empty.dart';
export 'package:git_touch/utils/utils.dart'; export 'package:git_touch/utils/utils.dart';
// This is a scaffold for infinite scroll screens // This is a scaffold for infinite scroll screens
@ -139,49 +137,19 @@ class _ListStatefulScaffoldState<T, K>
} }
} }
Widget _buildMaterial() {
if (error.isNotEmpty) {
return ErrorReload(text: error, onTap: _refresh);
} else if (loading && items.isEmpty) {
return const Loading(more: false);
} else if (items.isEmpty) {
return EmptyWidget();
} else {
return Scrollbar(
child: ListView.builder(
controller: _controller,
itemCount: 2 * items.length + 1,
itemBuilder: _buildItem,
),
);
}
}
Widget _buildBody() {
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return CupertinoScrollbar(
child: CustomScrollView(
controller: _controller,
slivers: [
CupertinoSliverRefreshControl(onRefresh: _refresh),
_buildCupertinoSliver(),
],
),
);
default:
return RefreshIndicator(
onRefresh: _refresh,
child: _buildMaterial(),
);
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CommonScaffold( return CommonScaffold(
title: widget.title, title: widget.title,
body: _buildBody(), body: CupertinoScrollbar(
child: CustomScrollView(
controller: _controller,
slivers: [
CupertinoSliverRefreshControl(onRefresh: _refresh),
_buildCupertinoSliver(),
],
),
),
action: widget.actionBuilder?.call(), action: widget.actionBuilder?.call(),
); );
} }

View File

@ -1,11 +1,11 @@
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/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../widgets/loading.dart';
import '../widgets/link.dart';
import '../widgets/error_reload.dart'; import '../widgets/error_reload.dart';
import '../widgets/link.dart';
import '../widgets/loading.dart';
class LongListPayload<T, K> { class LongListPayload<T, K> {
T header; T header;
@ -177,51 +177,25 @@ class _LongListStatefulScaffoldState<T, K>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (Provider.of<ThemeModel>(context).theme) { List<Widget> slivers = [CupertinoSliverRefreshControl(onRefresh: _refresh)];
case AppThemeType.cupertino: if (payload != null) {
List<Widget> slivers = [ slivers.add(
CupertinoSliverRefreshControl(onRefresh: _refresh) SliverToBoxAdapter(child: widget.headerBuilder(payload!.header)),
]; );
if (payload != null) {
slivers.add(
SliverToBoxAdapter(child: widget.headerBuilder(payload!.header)),
);
}
slivers.add(_buildSliver());
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: widget.title,
trailing: payload == null
? null
: widget.trailingBuilder!(payload!.header),
),
child: SafeArea(
child: CupertinoScrollbar(
child: CustomScrollView(slivers: slivers),
),
),
);
default:
return Scaffold(
appBar: AppBar(
title: widget.title,
actions: payload == null
? null
: [widget.trailingBuilder!(payload!.header)],
),
body: RefreshIndicator(
onRefresh: _refresh,
child: Scrollbar(
child: CustomScrollView(slivers: [
if (payload != null)
SliverToBoxAdapter(
child: widget.headerBuilder(payload!.header)),
_buildSliver(),
]),
),
),
);
} }
slivers.add(_buildSliver());
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: widget.title,
trailing:
payload == null ? null : widget.trailingBuilder!(payload!.header),
),
child: SafeArea(
child: CupertinoScrollbar(
child: CustomScrollView(slivers: slivers),
),
),
);
} }
} }

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/scaffolds/utils.dart'; import 'package:git_touch/scaffolds/utils.dart';

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
class SingleScaffold extends StatelessWidget { class SingleScaffold extends StatelessWidget {
@ -16,7 +16,7 @@ class SingleScaffold extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CommonScaffold( return CommonScaffold(
title: title, title: title,
body: Scrollbar(child: SingleChildScrollView(child: body)), body: CupertinoScrollbar(child: SingleChildScrollView(child: body)),
action: action, action: action,
); );
} }

View File

@ -1,9 +1,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/scaffolds/utils.dart'; import 'package:git_touch/scaffolds/utils.dart';
import 'package:provider/provider.dart';
class TabScaffold extends StatelessWidget { class TabScaffold extends StatelessWidget {
final Widget title; final Widget title;
@ -24,56 +21,33 @@ class TabScaffold extends StatelessWidget {
required this.onTabSwitch, required this.onTabSwitch,
}); });
Widget _buildTitle(BuildContext context) {
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return DefaultTextStyle(
style: DefaultTextStyle.of(context).style.copyWith(fontSize: 14),
child: Row(
children: [
Expanded(
child: CupertinoSlidingSegmentedControl<int>(
groupValue: activeTab,
onValueChanged: (v) {
if (v == null) return;
onTabSwitch(v);
},
children: tabs.asMap().map((key, text) => MapEntry(
key,
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(text),
))),
),
),
],
),
);
default:
return title;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final scaffold = CommonScaffold( return CommonScaffold(
title: _buildTitle(context), title: DefaultTextStyle(
style: DefaultTextStyle.of(context).style.copyWith(fontSize: 14),
child: Row(
children: [
Expanded(
child: CupertinoSlidingSegmentedControl<int>(
groupValue: activeTab,
onValueChanged: (v) {
if (v == null) return;
onTabSwitch(v);
},
children: tabs.asMap().map((key, text) => MapEntry(
key,
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(text),
))),
),
),
],
),
),
body: RefreshWrapper(body: body, onRefresh: onRefresh), body: RefreshWrapper(body: body, onRefresh: onRefresh),
// action: action, // TODO: // action: action, // TODO:
bottom: TabBar(
onTap: onTabSwitch,
tabs: tabs.map((text) => Tab(text: text.toUpperCase())).toList(),
),
); );
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return scaffold;
default:
return DefaultTabController(
length: tabs.length,
child: scaffold,
);
}
} }
} }

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/scaffolds/tab.dart'; import 'package:git_touch/scaffolds/tab.dart';
import 'package:git_touch/scaffolds/utils.dart'; import 'package:git_touch/scaffolds/utils.dart';

View File

@ -1,9 +1,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/widgets/error_reload.dart'; import 'package:git_touch/widgets/error_reload.dart';
import 'package:git_touch/widgets/loading.dart'; import 'package:git_touch/widgets/loading.dart';
import 'package:provider/provider.dart';
class RefreshWrapper extends StatelessWidget { class RefreshWrapper extends StatelessWidget {
final Widget body; final Widget body;
@ -16,25 +13,15 @@ class RefreshWrapper extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (Provider.of<ThemeModel>(context).theme) { return CupertinoScrollbar(
case AppThemeType.cupertino: child: CustomScrollView(
return CupertinoScrollbar( slivers: <Widget>[
child: CustomScrollView( CupertinoSliverRefreshControl(
slivers: <Widget>[ onRefresh: onRefresh as Future<void> Function()?),
CupertinoSliverRefreshControl( SliverToBoxAdapter(child: body),
onRefresh: onRefresh as Future<void> Function()?), ],
SliverToBoxAdapter(child: body), ),
], );
),
);
default:
return RefreshIndicator(
onRefresh: onRefresh as Future<void> Function(),
child: Scrollbar(
child: SingleChildScrollView(child: body),
),
);
}
} }
} }

View File

@ -1,4 +1,4 @@
// import 'package:flutter/material.dart'; // import 'package:flutter/widgets.dart';
// import 'package:git_touch/models/theme.dart'; // import 'package:git_touch/models/theme.dart';
// import 'package:git_touch/scaffolds/single.dart'; // import 'package:git_touch/scaffolds/single.dart';
// import 'package:git_touch/widgets/app_bar_title.dart'; // import 'package:git_touch/widgets/app_bar_title.dart';

View File

@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class BbCommitsScreen extends StatelessWidget { class BbCommitsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class BbExploreScreen extends StatelessWidget { class BbExploreScreen extends StatelessWidget {
@override @override

View File

@ -1,15 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/comment_item.dart'; import 'package:git_touch/widgets/comment_item.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class BbIssueScreen extends StatelessWidget { class BbIssueScreen extends StatelessWidget {

View File

@ -1,12 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/issue_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class BbIssuesScreen extends StatelessWidget { class BbIssuesScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,9 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/blob_view.dart'; import 'package:git_touch/widgets/blob_view.dart';

View File

@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/issue_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class BbPullsScreen extends StatelessWidget { class BbPullsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';

View File

@ -1,12 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.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;
import 'package:flutter_gen/gen_l10n/S.dart';
class BbTeamsScreen extends StatelessWidget { class BbTeamsScreen extends StatelessWidget {
@override @override

View File

@ -1,14 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/bitbucket.dart'; import 'package:git_touch/models/bitbucket.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_header.dart'; import 'package:git_touch/widgets/user_header.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import 'package:git_touch/utils/utils.dart';
class BbUserScreen extends StatelessWidget { class BbUserScreen extends StatelessWidget {
final String? login; final String? login;

View File

@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_highlight/theme_map.dart'; import 'package:flutter_highlight/theme_map.dart';
@ -13,7 +13,7 @@ import 'package:provider/provider.dart';
class CodeThemeScreen extends StatelessWidget { class CodeThemeScreen extends StatelessWidget {
String _getCode(bool isDark) => '''// ${isDark ? 'Dark' : 'Light'} Mode String _getCode(bool isDark) => '''// ${isDark ? 'Dark' : 'Light'} Mode
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
@override @override

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
@ -7,7 +8,6 @@ import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/blob_view.dart'; import 'package:git_touch/widgets/blob_view.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GeBlobScreen extends StatelessWidget { class GeBlobScreen extends StatelessWidget {
final String owner; final String owner;
@ -25,7 +25,8 @@ class GeBlobScreen extends StatelessWidget {
final res = await auth.fetchGitee('/repos/$owner/$name/git/blobs/$sha'); final res = await auth.fetchGitee('/repos/$owner/$name/git/blobs/$sha');
return GiteeBlob.fromJson(res).content; return GiteeBlob.fromJson(res).content;
}, },
action: const ActionEntry(iconData: Ionicons.cog, url: '/choose-code-theme'), action:
const ActionEntry(iconData: Ionicons.cog, url: '/choose-code-theme'),
bodyBuilder: (content, _) { bodyBuilder: (content, _) {
return BlobView(path, base64Text: content); return BlobView(path, base64Text: content);
}, },

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
@ -7,8 +9,6 @@ import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/files_item.dart'; import 'package:git_touch/widgets/files_item.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:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
class GeCommitScreen extends StatelessWidget { class GeCommitScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GeCommitsScreen extends StatelessWidget { class GeCommitsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,12 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.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/auth.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GeContributorsScreen extends StatelessWidget { class GeContributorsScreen extends StatelessWidget {
final String owner; final String owner;
@ -65,8 +66,7 @@ class GeContributorsScreen extends StatelessWidget {
color: theme.palette.secondaryText, color: theme.palette.secondaryText,
fontSize: 16, fontSize: 16,
), ),
child: Text( child: Text("Contributions: ${v.contributions}"),
"Contributions: ${v.contributions}"),
), ),
], ],
), ),

View File

@ -1,13 +1,14 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/files_item.dart'; import 'package:git_touch/widgets/files_item.dart';
import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GeFilesScreen extends StatelessWidget { class GeFilesScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,16 +1,16 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/comment_item.dart'; import 'package:git_touch/widgets/comment_item.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class GeIssueScreen extends StatelessWidget { class GeIssueScreen extends StatelessWidget {

View File

@ -1,7 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/hex_color_tag.dart'; import 'package:git_touch/widgets/hex_color_tag.dart';

View File

@ -1,16 +1,16 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/comment_item.dart'; import 'package:git_touch/widgets/comment_item.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class GePullScreen extends StatelessWidget { class GePullScreen extends StatelessWidget {
@ -89,17 +89,18 @@ class GePullScreen extends StatelessWidget {
additions += int.parse(file.additions!); additions += int.parse(file.additions!);
deletions += int.parse(file.deletions!); deletions += int.parse(file.deletions!);
} }
return Column(children: <Widget>[ return Column(
Container( children: <Widget>[
padding: CommonStyle.padding, Container(
child: Column( padding: CommonStyle.padding,
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: <Widget>[ crossAxisAlignment: CrossAxisAlignment.start,
LinkWidget( children: <Widget>[
url: '/gitee/$owner/$name', LinkWidget(
child: Container( url: '/gitee/$owner/$name',
padding: const EdgeInsets.symmetric(vertical: 8), child: Container(
child: Column( padding: const EdgeInsets.symmetric(vertical: 8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
LinkWidget( LinkWidget(
@ -149,7 +150,8 @@ class GePullScreen extends StatelessWidget {
LinkWidget( LinkWidget(
url: '/gitee/$owner/$name/pulls/$number/files', url: '/gitee/$owner/$name/pulls/$number/files',
child: Container( child: Container(
padding: const EdgeInsets.symmetric(vertical: 8), padding:
const EdgeInsets.symmetric(vertical: 8),
child: Row( child: Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
@ -190,71 +192,76 @@ class GePullScreen extends StatelessWidget {
), ),
CommonStyle.border, CommonStyle.border,
ListTileTheme( ListTileTheme(
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
child: ExpansionTile( child: ExpansionTile(
title: Text( title: Text(
'Commits', 'Commits',
style: TextStyle( style: TextStyle(
color: theme.palette.primary, color: theme.palette.primary,
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),
), ),
children: [ ),
for (var commit in commits) ...[ children: [
LinkWidget( for (var commit in commits) ...[
url: LinkWidget(
'/gitee/$owner/$name/commits/${commit.sha}', url:
child: Container( '/gitee/$owner/$name/commits/${commit.sha}',
padding: child: Container(
const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(
child: Row( vertical: 8),
mainAxisAlignment: child: Row(
MainAxisAlignment.spaceBetween, mainAxisAlignment:
children: <Widget>[ MainAxisAlignment.spaceBetween,
Text( children: <Widget>[
commit.sha!.substring(0, 7), Text(
style: TextStyle( commit.sha!.substring(0, 7),
color: theme.palette.primary, style: TextStyle(
fontSize: 17, color: theme.palette.primary,
fontFamily: fontSize: 17,
CommonStyle.monospace, fontFamily:
), CommonStyle.monospace,
), ),
], ),
), ],
), ),
) ),
] )
], ]
)), ],
]), ),
),
],
),
),
), ),
), CommonStyle.border,
],
)),
Column(
children: [
for (var comment in comments) ...[
Padding(
padding: const EdgeInsets.only(left: 10),
child: CommentItem(
avatar: Avatar(
url: comment.user!.avatarUrl,
linkUrl: '/gitee/${comment.user!.login}',
),
createdAt: DateTime.parse(comment.createdAt!),
body: comment.body,
login: comment.user!.login,
prefix: 'gitee',
commentActionItemList:
_buildCommentActionItem(context, comment),
)),
CommonStyle.border, CommonStyle.border,
const SizedBox(height: 16),
], ],
)), ],
Column(children: [ ),
for (var comment in comments) ...[ ],
Padding( );
padding: const EdgeInsets.only(left: 10),
child: CommentItem(
avatar: Avatar(
url: comment.user!.avatarUrl,
linkUrl: '/gitee/${comment.user!.login}',
),
createdAt: DateTime.parse(comment.createdAt!),
body: comment.body,
login: comment.user!.login,
prefix: 'gitee',
commentActionItemList:
_buildCommentActionItem(context, comment),
)),
CommonStyle.border,
const SizedBox(height: 16),
],
]),
]);
}, },
); );
} }

View File

@ -1,7 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/hex_color_tag.dart'; import 'package:git_touch/widgets/hex_color_tag.dart';
import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/issue_item.dart';

View File

@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';

View File

@ -1,10 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
class GeReposScreen extends StatelessWidget { class GeReposScreen extends StatelessWidget {

View File

@ -1,5 +1,8 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/issue_item.dart';
@ -8,10 +11,6 @@ import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
class GeSearchScreen extends StatefulWidget { class GeSearchScreen extends StatefulWidget {
@ -71,37 +70,6 @@ class _GeSearchScreenState extends State<GeSearchScreen> {
} }
} }
Widget _buildInput() {
final theme = Provider.of<ThemeModel>(context);
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
);
default:
return TextField(
decoration: InputDecoration.collapsed(
hintText: AppLocalizations.of(context)!.search),
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
);
}
}
_onTabSwitch(int? index) { _onTabSwitch(int? index) {
setState(() { setState(() {
_activeTab = index; _activeTab = index;
@ -150,10 +118,25 @@ class _GeSearchScreenState extends State<GeSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Provider.of<ThemeModel>(context).theme; final theme = Provider.of<ThemeModel>(context);
final scaffold = CommonScaffold( return CommonScaffold(
title: _buildInput(), title: Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
@ -168,7 +151,8 @@ class _GeSearchScreenState extends State<GeSearchScreen> {
key, key,
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 8), padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(text, style: const TextStyle(fontSize: 14)), child:
Text(text, style: const TextStyle(fontSize: 14)),
))), ))),
), ),
), ),
@ -180,19 +164,6 @@ class _GeSearchScreenState extends State<GeSearchScreen> {
], ],
), ),
), ),
bottom: TabBar(
onTap: _onTabSwitch,
tabs: tabs.map((text) => Tab(text: text.toUpperCase())).toList(),
),
); );
if (theme == AppThemeType.material) {
return DefaultTabController(
length: tabs.length,
child: scaffold,
);
} else {
return scaffold;
}
} }
} }

View File

@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';

View File

@ -1,18 +1,18 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/widgets/entry_item.dart'; import 'package:git_touch/widgets/entry_item.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_header.dart'; import 'package:git_touch/widgets/user_header.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/widgets/action_button.dart';
import 'package:tuple/tuple.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:tuple/tuple.dart';
class GeUserScreen extends StatelessWidget { class GeUserScreen extends StatelessWidget {
final String login; final String login;

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitee.dart'; import 'package:git_touch/models/gitee.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class GeUsersScreen extends StatelessWidget { class GeUsersScreen extends StatelessWidget {

View File

@ -1,5 +1,6 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
@ -9,7 +10,6 @@ import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhCommits extends StatelessWidget { class GhCommits extends StatelessWidget {
final String owner; final String owner;
@ -21,7 +21,8 @@ class GhCommits extends StatelessWidget {
const size = 18.0; const size = 18.0;
switch (state) { switch (state) {
case GStatusState.SUCCESS: case GStatusState.SUCCESS:
return const Icon(Octicons.check, color: GithubPalette.open, size: size); return const Icon(Octicons.check,
color: GithubPalette.open, size: size);
case GStatusState.FAILURE: case GStatusState.FAILURE:
return const Icon(Octicons.x, color: GithubPalette.closed, size: size); return const Icon(Octicons.x, color: GithubPalette.closed, size: size);
default: default:

View File

@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/files_item.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/files_item.dart';
import 'package:provider/provider.dart';
class GhComparisonScreen extends StatelessWidget { class GhComparisonScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/contributor_item.dart'; import 'package:git_touch/widgets/contributor_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhContributorsScreen extends StatelessWidget { class GhContributorsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/event_item.dart'; import 'package:git_touch/widgets/event_item.dart';
import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhEventsScreen extends StatelessWidget { class GhEventsScreen extends StatelessWidget {
final String login; final String login;

View File

@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/files_item.dart'; import 'package:git_touch/widgets/files_item.dart';
import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhFilesScreen extends StatelessWidget { class GhFilesScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/blob_view.dart'; import 'package:git_touch/widgets/blob_view.dart';
import 'package:git_touch/widgets/action_entry.dart';
class GistObjectScreen extends StatelessWidget { class GistObjectScreen extends StatelessWidget {
final String login; final String login;
@ -12,7 +12,8 @@ class GistObjectScreen extends StatelessWidget {
final String? raw; final String? raw;
final String? content; final String? content;
const GistObjectScreen(this.login, this.id, this.file, {this.raw, this.content}); const GistObjectScreen(this.login, this.id, this.file,
{this.raw, this.content});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -1,15 +1,15 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/gists_item.dart'; import 'package:git_touch/widgets/gists_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
class GhGistsScreen extends StatelessWidget { class GhGistsScreen extends StatelessWidget {
final String login; final String login;

View File

@ -1,6 +1,6 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';

View File

@ -1,5 +1,5 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
@ -10,9 +10,10 @@ import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/timeline_item.dart'; import 'package:git_touch/widgets/timeline_item.dart';
import 'package:github/github.dart' as github;
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:github/github.dart' as github;
import '../scaffolds/long_list.dart'; import '../scaffolds/long_list.dart';
import '../widgets/comment_item.dart'; import '../widgets/comment_item.dart';

View File

@ -1,5 +1,5 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';

View File

@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/models/notification.dart'; import 'package:git_touch/models/notification.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/event_item.dart'; import 'package:git_touch/widgets/event_item.dart';
import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhNewsScreen extends StatefulWidget { class GhNewsScreen extends StatefulWidget {
@override @override

View File

@ -1,18 +1,19 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart';
import 'package:git_touch/models/notification.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/tab_stateful.dart'; import 'package:git_touch/scaffolds/tab_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:github/github.dart'; import 'package:github/github.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/notification.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart';
import '../widgets/notification_item.dart';
import '../widgets/list_group.dart';
import '../widgets/empty.dart';
import '../utils/utils.dart'; import '../utils/utils.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import '../widgets/empty.dart';
import '../widgets/list_group.dart';
import '../widgets/notification_item.dart';
class GhNotificationScreen extends StatefulWidget { class GhNotificationScreen extends StatefulWidget {
@override @override

View File

@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart';
import 'package:github/github.dart'; import 'package:github/github.dart';
import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:flutter_gen/gen_l10n/S.dart';
/// There are some restrictions of organization repos with OAuth /// There are some restrictions of organization repos with OAuth
/// ///

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/github.dart'; import 'package:git_touch/models/github.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhUserOrganizationScreen extends StatelessWidget { class GhUserOrganizationScreen extends StatelessWidget {
final String login; final String login;

View File

@ -1,5 +1,5 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';

View File

@ -1,14 +1,14 @@
import 'package:flutter/material.dart';
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/release_item.dart'; import 'package:git_touch/widgets/release_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
class GhReleasesScreen extends StatelessWidget { class GhReleasesScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -2,7 +2,7 @@ import 'package:antd_mobile/antd_mobile.dart';
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';

View File

@ -1,13 +1,13 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
class GhRepos extends StatelessWidget { class GhRepos extends StatelessWidget {

View File

@ -1,17 +1,16 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/issue_item.dart';
import 'package:git_touch/widgets/loading.dart'; import 'package:git_touch/widgets/loading.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:flutter_gen/gen_l10n/S.dart';
class GhSearchScreen extends StatefulWidget { class GhSearchScreen extends StatefulWidget {
@override @override
@ -113,37 +112,6 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
} }
} }
Widget _buildInput() {
final theme = Provider.of<ThemeModel>(context);
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
);
default:
return TextField(
decoration: InputDecoration.collapsed(
hintText: AppLocalizations.of(context)!.search),
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
);
}
}
_onTabSwitch(int? index) { _onTabSwitch(int? index) {
setState(() { setState(() {
_activeTab = index; _activeTab = index;
@ -210,10 +178,25 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Provider.of<ThemeModel>(context).theme; final theme = Provider.of<ThemeModel>(context);
final scaffold = CommonScaffold( return CommonScaffold(
title: _buildInput(), title: Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
@ -228,7 +211,8 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
key, key,
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 8), padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(text, style: const TextStyle(fontSize: 14)), child:
Text(text, style: const TextStyle(fontSize: 14)),
))), ))),
), ),
), ),
@ -240,19 +224,6 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
], ],
), ),
), ),
bottom: TabBar(
onTap: _onTabSwitch,
tabs: tabs.map((text) => Tab(text: text.toUpperCase())).toList(),
),
); );
if (theme == AppThemeType.material) {
return DefaultTabController(
length: tabs.length,
child: scaffold,
);
} else {
return scaffold;
}
} }
} }

View File

@ -1,14 +1,14 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/tab_stateful.dart'; import 'package:git_touch/scaffolds/tab_stateful.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/app_bar_title.dart';
import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:github_trending/github_trending.dart'; import 'package:github_trending/github_trending.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhTrendingScreen extends StatelessWidget { class GhTrendingScreen extends StatelessWidget {
static final trending = GithubTrending(prefix: 'https://gtrend.yapie.me'); static final trending = GithubTrending(prefix: 'https://gtrend.yapie.me');

View File

@ -1,6 +1,6 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';

View File

@ -1,12 +1,12 @@
import 'package:ferry/ferry.dart'; import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; import 'package:git_touch/graphql/__generated__/github.data.gql.dart';
import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; import 'package:git_touch/graphql/__generated__/github.req.gql.dart';
import 'package:git_touch/graphql/__generated__/github.var.gql.dart'; import 'package:git_touch/graphql/__generated__/github.var.gql.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class GhFollowers extends StatelessWidget { class GhFollowers extends StatelessWidget {

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
@ -24,7 +24,8 @@ class GlBlobScreen extends StatelessWidget {
'/projects/$id/repository/files/${path!.urlencode}?ref=$ref'); '/projects/$id/repository/files/${path!.urlencode}?ref=$ref');
return GitlabBlob.fromJson(res); return GitlabBlob.fromJson(res);
}, },
action: const ActionEntry(iconData: Ionicons.cog, url: '/choose-code-theme'), action:
const ActionEntry(iconData: Ionicons.cog, url: '/choose-code-theme'),
bodyBuilder: (data, _) { bodyBuilder: (data, _) {
return BlobView(path, base64Text: data.content); return BlobView(path, base64Text: data.content);
}, },

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:flutter_highlight/flutter_highlight.dart'; import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_highlight/theme_map.dart'; import 'package:flutter_highlight/theme_map.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
@ -9,7 +10,6 @@ import 'package:git_touch/scaffolds/refresh_stateful.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/app_bar_title.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
// TODO: // TODO:
class GlCommitScreen extends StatelessWidget { class GlCommitScreen extends StatelessWidget {

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GlCommitsScreen extends StatelessWidget { class GlCommitsScreen extends StatelessWidget {
final String id; final String id;

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
@ -6,7 +7,6 @@ import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.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;
import 'package:flutter_gen/gen_l10n/S.dart';
class GlExploreScreen extends StatelessWidget { class GlExploreScreen extends StatelessWidget {
@override @override

View File

@ -1,16 +1,15 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/entry_item.dart'; import 'package:git_touch/widgets/entry_item.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_header.dart'; import 'package:git_touch/widgets/user_header.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:tuple/tuple.dart';
class GlGroupScreen extends StatelessWidget { class GlGroupScreen extends StatelessWidget {
final int id; final int id;

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GlGroupsScreenn extends StatelessWidget { class GlGroupsScreenn extends StatelessWidget {
@override @override

View File

@ -1,13 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/comment_item.dart'; import 'package:git_touch/widgets/comment_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GlIssueScreen extends StatelessWidget { class GlIssueScreen extends StatelessWidget {
final int projectId; final int projectId;

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GlMembersScreen extends StatelessWidget { class GlMembersScreen extends StatelessWidget {
final int id; final int id;

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';

View File

@ -1,6 +1,6 @@
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
@ -7,7 +8,6 @@ import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.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:flutter_gen/gen_l10n/S.dart';
class GlProjectActivityScreen extends StatelessWidget { class GlProjectActivityScreen extends StatelessWidget {
final int id; final int id;

View File

@ -1,17 +1,16 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/common.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/loading.dart'; import 'package:git_touch/widgets/loading.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:git_touch/models/gitlab.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GlSearchScreen extends StatefulWidget { class GlSearchScreen extends StatefulWidget {
@override @override
@ -62,37 +61,6 @@ class _GlSearchScreenState extends State<GlSearchScreen> {
} }
} }
Widget _buildInput() {
final theme = Provider.of<ThemeModel>(context);
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
);
default:
return TextField(
decoration: InputDecoration.collapsed(
hintText: AppLocalizations.of(context)!.search),
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
);
}
}
_onTabSwitch(int? index) { _onTabSwitch(int? index) {
setState(() { setState(() {
_activeTab = index; _activeTab = index;
@ -126,29 +94,43 @@ class _GlSearchScreenState extends State<GlSearchScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Provider.of<ThemeModel>(context).theme; final theme = Provider.of<ThemeModel>(context);
final scaffold = CommonScaffold( return CommonScaffold(
title: _buildInput(), title: Container(
color: theme.palette.background,
child: CupertinoTextField(
prefix: Row(
children: const <Widget>[
SizedBox(width: 8),
Icon(Octicons.search, size: 20, color: PrimerColors.gray400),
],
),
placeholder: AppLocalizations.of(context)!.search,
clearButtonMode: OverlayVisibilityMode.editing,
textInputAction: TextInputAction.go,
onSubmitted: (_) => _query(),
controller: _controller,
),
),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
if (theme == AppThemeType.cupertino) Center(
Center( child: Padding(
child: Padding( padding: const EdgeInsets.symmetric(vertical: 8),
padding: const EdgeInsets.symmetric(vertical: 8), child: CupertinoSlidingSegmentedControl(
child: CupertinoSlidingSegmentedControl( groupValue: _activeTab,
groupValue: _activeTab, onValueChanged: _onTabSwitch,
onValueChanged: _onTabSwitch, children: tabs.asMap().map((key, text) => MapEntry(
children: tabs.asMap().map((key, text) => MapEntry( key,
key, Padding(
Padding( padding: const EdgeInsets.symmetric(horizontal: 8),
padding: const EdgeInsets.symmetric(horizontal: 8), child: Text(text, style: const TextStyle(fontSize: 14)),
child: Text(text, style: const TextStyle(fontSize: 14)), ))),
))),
),
), ),
), ),
),
if (_loading) if (_loading)
const Loading() const Loading()
else if (_activeTab == 0) else if (_activeTab == 0)
@ -158,19 +140,6 @@ class _GlSearchScreenState extends State<GlSearchScreen> {
], ],
), ),
), ),
bottom: TabBar(
onTap: _onTabSwitch,
tabs: tabs.map((text) => Tab(text: text.toUpperCase())).toList(),
),
); );
if (theme == AppThemeType.material) {
return DefaultTabController(
length: tabs.length,
child: scaffold,
);
} else {
return scaffold;
}
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
@ -6,7 +7,6 @@ import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.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;
import 'package:flutter_gen/gen_l10n/S.dart';
class GlStarrersScreen extends StatelessWidget { class GlStarrersScreen extends StatelessWidget {
final int id; final int id;

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/models/theme.dart'; import 'package:git_touch/models/theme.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';

View File

@ -1,16 +1,15 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitlab.dart'; import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/user_header.dart'; import 'package:git_touch/widgets/user_header.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:tuple/tuple.dart';
class GlUserScreen extends StatelessWidget { class GlUserScreen extends StatelessWidget {
final int? id; final int? id;

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GoCommitsScreen extends StatelessWidget { class GoCommitsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
@ -6,7 +7,6 @@ import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GoOrgsScreen extends StatelessWidget { class GoOrgsScreen extends StatelessWidget {
final String api; final String api;

View File

@ -1,6 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart';
class GoReposScreen extends StatelessWidget { class GoReposScreen extends StatelessWidget {
final String api; final String api;

View File

@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
class GoSearchScreen extends StatelessWidget { class GoSearchScreen extends StatelessWidget {
@override @override

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gogs.dart'; import 'package:git_touch/models/gogs.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class GoUsersScreen extends StatelessWidget { class GoUsersScreen extends StatelessWidget {

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/commit_item.dart'; import 'package:git_touch/widgets/commit_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GtCommitsScreen extends StatelessWidget { class GtCommitsScreen extends StatelessWidget {
final String owner; final String owner;

View File

@ -1,16 +1,16 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/action_button.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/comment_item.dart'; import 'package:git_touch/widgets/comment_item.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/theme.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class GtIssueScreen extends StatelessWidget { class GtIssueScreen extends StatelessWidget {

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';

View File

@ -1,4 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GtOrgsScreen extends StatelessWidget { class GtOrgsScreen extends StatelessWidget {
final String api; final String api;

View File

@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';

View File

@ -1,10 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/models/auth.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/widgets/repository_item.dart'; import 'package:git_touch/widgets/repository_item.dart';
import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
class GtReposScreen extends StatelessWidget { class GtReposScreen extends StatelessWidget {

View File

@ -1,5 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/S.dart'; import 'package:flutter_gen/gen_l10n/S.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/models/gitea.dart'; import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/user_item.dart'; import 'package:git_touch/widgets/user_item.dart';
import 'package:git_touch/models/auth.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;

Some files were not shown because too many files have changed in this diff Show More