mirror of
https://github.com/git-touch/git-touch
synced 2025-03-05 11:48:02 +01:00
improvment: drop screen builder for link
This commit is contained in:
parent
151ca1fbaa
commit
032be3b8f3
@ -5,6 +5,7 @@ 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/screens/commits.dart';
|
import 'package:git_touch/screens/commits.dart';
|
||||||
import 'package:git_touch/screens/credits.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_todos.dart';
|
||||||
import 'package:git_touch/screens/gitlab_user.dart';
|
import 'package:git_touch/screens/gitlab_user.dart';
|
||||||
import 'package:git_touch/screens/issue_form.dart';
|
import 'package:git_touch/screens/issue_form.dart';
|
||||||
@ -229,7 +230,7 @@ void main() async {
|
|||||||
codeModel.init(),
|
codeModel.init(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// TODO: gitlab
|
// github
|
||||||
themeModel.router.define('/login', handler: Handler(
|
themeModel.router.define('/login', handler: Handler(
|
||||||
handlerFunc: (context, params) {
|
handlerFunc: (context, params) {
|
||||||
return LoginScreen();
|
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(
|
runApp(MultiProvider(
|
||||||
providers: [
|
providers: [
|
||||||
ChangeNotifierProvider(create: (context) => notificationModel),
|
ChangeNotifierProvider(create: (context) => notificationModel),
|
||||||
|
@ -3,7 +3,6 @@ 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';
|
||||||
import 'package:git_touch/scaffolds/refresh_stateful.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/utils/utils.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';
|
||||||
@ -25,9 +24,8 @@ class GitlabTodosScreen extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: data.map((item) {
|
children: data.map((item) {
|
||||||
return Link(
|
return Link(
|
||||||
screenBuilder: (_) => GitlabIssueScreen(
|
url:
|
||||||
item.target.projectId, item.target.iid,
|
'/project/${item.target.projectId}/${item.targetType == 'MergeRequest' ? 'merge_requests' : 'issue'}/${item.target.iid}',
|
||||||
isMr: item.targetType == 'MergeRequest'),
|
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: CommonStyle.padding,
|
padding: CommonStyle.padding,
|
||||||
child: Row(
|
child: Row(
|
||||||
|
@ -5,7 +5,6 @@ import 'package:git_touch/graphql/github_object.dart';
|
|||||||
import 'package:git_touch/models/code.dart';
|
import 'package:git_touch/models/code.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/code_theme.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/markdown_view.dart';
|
import 'package:git_touch/widgets/markdown_view.dart';
|
||||||
@ -102,10 +101,11 @@ class ObjectScreen extends StatelessWidget {
|
|||||||
return ActionEntry(
|
return ActionEntry(
|
||||||
iconData: Octicons.settings,
|
iconData: Octicons.settings,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (data != null) {
|
// TODO:
|
||||||
Provider.of<ThemeModel>(context).pushRoute(
|
// if (data != null) {
|
||||||
context, (_) => CodeThemeScreen(blob.text, _language));
|
// Provider.of<ThemeModel>(context).pushRoute(
|
||||||
}
|
// context, (_) => CodeThemeScreen(blob.text, _language));
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
default:
|
default:
|
||||||
|
@ -7,25 +7,20 @@ import 'package:git_touch/models/theme.dart';
|
|||||||
class Link extends StatelessWidget {
|
class Link extends StatelessWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
final String url;
|
final String url;
|
||||||
final WidgetBuilder screenBuilder;
|
|
||||||
final Function onTap;
|
final Function onTap;
|
||||||
final VoidCallback onLongPress;
|
final VoidCallback onLongPress;
|
||||||
|
|
||||||
Link({
|
Link({
|
||||||
this.child,
|
this.child,
|
||||||
this.url,
|
this.url,
|
||||||
this.screenBuilder,
|
|
||||||
this.onTap,
|
this.onTap,
|
||||||
this.onLongPress,
|
this.onLongPress,
|
||||||
}) : assert(screenBuilder == null || url == null);
|
});
|
||||||
|
|
||||||
void _onTap(BuildContext context) {
|
void _onTap(BuildContext context) {
|
||||||
if (onTap != null) {
|
if (onTap != null) {
|
||||||
return onTap();
|
return onTap();
|
||||||
}
|
}
|
||||||
if (screenBuilder != null) {
|
|
||||||
return Provider.of<ThemeModel>(context).pushRoute(context, screenBuilder);
|
|
||||||
}
|
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
if (url.startsWith('/')) {
|
if (url.startsWith('/')) {
|
||||||
Provider.of<ThemeModel>(context).push(context, url);
|
Provider.of<ThemeModel>(context).push(context, url);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user