From 032be3b8f31a31aad460f997b1aec8b430652b5b Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Fri, 13 Dec 2019 11:02:05 +0800 Subject: [PATCH] improvment: drop screen builder for link --- lib/main.dart | 11 ++++++++++- lib/screens/gitlab_todos.dart | 6 ++---- lib/screens/object.dart | 10 +++++----- lib/widgets/link.dart | 7 +------ 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index ee2d43a..3925455 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,6 +5,7 @@ import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/screens/commits.dart'; import 'package:git_touch/screens/credits.dart'; +import 'package:git_touch/screens/gitlab_issue.dart'; import 'package:git_touch/screens/gitlab_todos.dart'; import 'package:git_touch/screens/gitlab_user.dart'; import 'package:git_touch/screens/issue_form.dart'; @@ -229,7 +230,7 @@ void main() async { codeModel.init(), ]); - // TODO: gitlab + // github themeModel.router.define('/login', handler: Handler( handlerFunc: (context, params) { return LoginScreen(); @@ -309,6 +310,14 @@ void main() async { }, )); + // gitlab + themeModel.router.define('/project/:id/issue/:iid', handler: Handler( + handlerFunc: (context, params) { + return GitlabIssueScreen( + int.parse(['id'].first), int.parse(params['iid'].first)); + }, + )); + runApp(MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => notificationModel), diff --git a/lib/screens/gitlab_todos.dart b/lib/screens/gitlab_todos.dart index 5609e2c..bec555c 100644 --- a/lib/screens/gitlab_todos.dart +++ b/lib/screens/gitlab_todos.dart @@ -3,7 +3,6 @@ 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/scaffolds/refresh_stateful.dart'; -import 'package:git_touch/screens/gitlab_issue.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/avatar.dart'; import 'package:git_touch/widgets/link.dart'; @@ -25,9 +24,8 @@ class GitlabTodosScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: data.map((item) { return Link( - screenBuilder: (_) => GitlabIssueScreen( - item.target.projectId, item.target.iid, - isMr: item.targetType == 'MergeRequest'), + url: + '/project/${item.target.projectId}/${item.targetType == 'MergeRequest' ? 'merge_requests' : 'issue'}/${item.target.iid}', child: Container( padding: CommonStyle.padding, child: Row( diff --git a/lib/screens/object.dart b/lib/screens/object.dart index e553e81..6f5fb34 100644 --- a/lib/screens/object.dart +++ b/lib/screens/object.dart @@ -5,7 +5,6 @@ import 'package:git_touch/graphql/github_object.dart'; import 'package:git_touch/models/code.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart'; -import 'package:git_touch/screens/code_theme.dart'; import 'package:git_touch/widgets/action_entry.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/markdown_view.dart'; @@ -102,10 +101,11 @@ class ObjectScreen extends StatelessWidget { return ActionEntry( iconData: Octicons.settings, onTap: () { - if (data != null) { - Provider.of(context).pushRoute( - context, (_) => CodeThemeScreen(blob.text, _language)); - } + // TODO: + // if (data != null) { + // Provider.of(context).pushRoute( + // context, (_) => CodeThemeScreen(blob.text, _language)); + // } }, ); default: diff --git a/lib/widgets/link.dart b/lib/widgets/link.dart index 627f02b..4c8de51 100644 --- a/lib/widgets/link.dart +++ b/lib/widgets/link.dart @@ -7,25 +7,20 @@ import 'package:git_touch/models/theme.dart'; class Link extends StatelessWidget { final Widget child; final String url; - final WidgetBuilder screenBuilder; final Function onTap; final VoidCallback onLongPress; Link({ this.child, this.url, - this.screenBuilder, this.onTap, this.onLongPress, - }) : assert(screenBuilder == null || url == null); + }); void _onTap(BuildContext context) { if (onTap != null) { return onTap(); } - if (screenBuilder != null) { - return Provider.of(context).pushRoute(context, screenBuilder); - } if (url != null) { if (url.startsWith('/')) { Provider.of(context).push(context, url);