Skip to content

Commit 83be483

Browse files
committed
feat(deep link): support full url on web; should fix deep link on Android
1 parent 92704cd commit 83be483

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

lib/config/router.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,24 @@ import 'package:boxbox/Screens/video.dart';
3838
import 'package:boxbox/Screens/videos.dart';
3939
import 'package:boxbox/api/race_components.dart';
4040
import 'package:boxbox/helpers/bottom_navigation_bar.dart';
41+
import 'package:boxbox/helpers/route_handler.dart';
4142
import 'package:flutter/material.dart';
4243
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
4344
import 'package:go_router/go_router.dart';
4445

4546
class RouterLocalConfig {
4647
static final router = GoRouter(
47-
errorBuilder: (context, state) => ErrorNotFoundScreen(
48-
route: state.uri.toString(),
49-
),
48+
errorBuilder: (context, state) {
49+
String url = state.uri.toString().replaceFirst('/', '');
50+
if (url.startsWith('https://www.formula1.com') ||
51+
url.startsWith('https://formula1.com')) {
52+
return SharedLinkHandler(url);
53+
} else {
54+
return ErrorNotFoundScreen(
55+
route: state.uri.toString(),
56+
);
57+
}
58+
},
5059
routes: [
5160
GoRoute(
5261
path: '/',

lib/helpers/route_handler.dart

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@
1818
*/
1919

2020
import 'package:boxbox/Screens/404.dart';
21-
import 'package:boxbox/Screens/article.dart';
2221
import 'package:boxbox/Screens/schedule.dart';
2322
import 'package:boxbox/Screens/standings.dart';
24-
import 'package:boxbox/Screens/video.dart';
2523
import 'package:boxbox/Screens/videos.dart';
2624
import 'package:flutter/material.dart';
2725
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
26+
import 'package:go_router/go_router.dart';
2827

2928
class HandleRoute {
3029
static Route? handleRoute(String? url) {
@@ -63,21 +62,14 @@ class SharedLinkHandler extends StatelessWidget {
6362
),
6463
body: VideosScreen(ScrollController()),
6564
);
66-
} else if (url.startsWith('/en/latest/article.')) {
67-
return ArticleScreen(
68-
url.split('.').last,
69-
'',
70-
true,
71-
);
72-
} else if (url.startsWith('/en/latest/article/')) {
73-
return ArticleScreen(
74-
url.split('/').last,
75-
'',
76-
true,
77-
);
78-
} else if (url.startsWith('/en/latest/video.')) {
79-
String videoId = url.split('.')[2];
80-
return VideoScreenFromId(videoId);
65+
} else if (url.startsWith('/en/latest/article/') ||
66+
url.startsWith('/en/latest/article.')) {
67+
context.goNamed('article', pathParameters: {'id': url.split('.').last});
68+
return Container();
69+
} else if (url.startsWith('/en/video/') ||
70+
url.startsWith('/en/latest/video.')) {
71+
context.goNamed('video', pathParameters: {'id': url.split('.').last});
72+
return Container();
8173
} else if (url.startsWith('/en/racing/$year')) {
8274
return Scaffold(
8375
appBar: AppBar(
@@ -111,7 +103,9 @@ class SharedLinkHandler extends StatelessWidget {
111103
),
112104
);
113105
} else {
114-
return ErrorNotFoundScreen();
106+
return ErrorNotFoundScreen(
107+
route: sharedUrl,
108+
);
115109
}
116110
}
117111
}

0 commit comments

Comments
 (0)