refactor: push router

This commit is contained in:
Rongjian Zhang 2019-12-12 22:02:58 +08:00
parent 24eea80b66
commit 151ca1fbaa
7 changed files with 18 additions and 30 deletions

View File

@ -13,6 +13,7 @@ import 'package:git_touch/screens/notification.dart';
import 'package:git_touch/screens/object.dart'; import 'package:git_touch/screens/object.dart';
import 'package:git_touch/screens/repository.dart'; import 'package:git_touch/screens/repository.dart';
import 'package:git_touch/screens/repositories.dart'; import 'package:git_touch/screens/repositories.dart';
import 'package:git_touch/screens/settings.dart';
import 'package:git_touch/screens/user.dart'; import 'package:git_touch/screens/user.dart';
import 'package:primer/primer.dart'; import 'package:primer/primer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -234,6 +235,11 @@ void main() async {
return LoginScreen(); return LoginScreen();
}, },
)); ));
themeModel.router.define('/settings', handler: Handler(
handlerFunc: (context, params) {
return SettingsScreen();
},
));
themeModel.router.define('/help/credits', handler: Handler( themeModel.router.define('/help/credits', handler: Handler(
handlerFunc: (context, params) { handlerFunc: (context, params) {
return CreditsScreen(); return CreditsScreen();

View File

@ -2,7 +2,6 @@ import 'package:flutter/material.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';
import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/screens/issue_form.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';
@ -52,9 +51,8 @@ class IssuesScreen extends StatelessWidget {
actionBuilder: () => ActionEntry( actionBuilder: () => ActionEntry(
iconData: Octicons.plus, iconData: Octicons.plus,
onTap: () { onTap: () {
Provider.of<ThemeModel>(context).pushRoute( Provider.of<ThemeModel>(context)
context, (_) => IssueFormScreen(owner, name), .push(context, '/$owner/$name/issues/new');
fullscreenDialog: true);
}), }),
onRefresh: () => _query(context), onRefresh: () => _query(context),
onLoadMore: (cursor) => _query(context, cursor), onLoadMore: (cursor) => _query(context, cursor),

View File

@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart';
import 'package:git_touch/graphql/github_user.dart'; import 'package:git_touch/graphql/github_user.dart';
import 'package:git_touch/models/theme.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/screens/settings.dart';
import 'package:git_touch/screens/users.dart'; import 'package:git_touch/screens/users.dart';
import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/action_entry.dart';
@ -270,9 +269,7 @@ class UserScreen extends StatelessWidget {
return ActionEntry( return ActionEntry(
iconData: Icons.settings, iconData: Icons.settings,
onTap: () { onTap: () {
Provider.of<ThemeModel>(context).pushRoute( Provider.of<ThemeModel>(context).push(context, '/settings');
context, (_) => SettingsScreen(),
fullscreenDialog: true);
}, },
); );
} else { } else {

View File

@ -37,9 +37,10 @@ class Avatar extends StatelessWidget {
), ),
), ),
onTap: () { onTap: () {
Provider.of<ThemeModel>(context).pushRoute( // TODO:
context, (_) => ImageViewScreen(url), // Provider.of<ThemeModel>(context).pushRoute(
fullscreenDialog: true); // context, (_) => ImageViewScreen(url),
// fullscreenDialog: true);
}, },
); );
} }

View File

@ -46,7 +46,6 @@ class EntryItem extends StatelessWidget {
], ],
), ),
), ),
screenBuilder: screenBuilder,
url: url, url: url,
), ),
); );

View File

@ -5,7 +5,6 @@ import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago; import 'package:timeago/timeago.dart' as timeago;
import '../utils/utils.dart'; import '../utils/utils.dart';
import '../widgets/link.dart'; import '../widgets/link.dart';
import '../screens/issue.dart';
const issueGqlChunk = ''' const issueGqlChunk = '''
number number
@ -43,14 +42,8 @@ class IssueItem extends StatelessWidget {
final theme = Provider.of<ThemeModel>(context); final theme = Provider.of<ThemeModel>(context);
return Link( return Link(
screenBuilder: (context) { url:
return IssueScreen( '/${payload['repository']['owner']['login']}/${payload['repository']['name']}/${isPullRequest ? 'pulls' : 'issues'}/${payload['number']}',
payload['repository']['owner']['login'] as String,
payload['repository']['name'] as String,
payload['number'] as int,
isPullRequest: isPullRequest,
);
},
child: Container( child: Container(
padding: CommonStyle.padding, padding: CommonStyle.padding,
// color: payload.unread ? Colors.white : Colors.black12, // color: payload.unread ? Colors.white : Colors.black12,

View File

@ -102,15 +102,9 @@ class _NotificationItemState extends State<NotificationItem> {
switch (payload.type) { switch (payload.type) {
case 'Issue': case 'Issue':
case 'PullRequest': case 'PullRequest':
Provider.of<ThemeModel>(context).pushRoute( final resource = payload.type == 'PullRequest' ? 'pulls' : 'issues';
context, Provider.of<ThemeModel>(context).push(context,
(_) => IssueScreen( '/${payload.owner}/${payload.name}/$resource/${payload.number}');
payload.owner,
payload.name,
payload.number,
isPullRequest: payload.type == 'PullRequest',
));
break; break;
case 'Release': case 'Release':
launchUrl( launchUrl(