Skip to content

Commit d5144b7

Browse files
deep-diverkkweon
andauthored
feat: open recommendation papers (#144)
* make scrollable * launchable paper url * Update client/lib/widgets/detail/recommendation.dart Co-authored-by: Mo Kweon <[email protected]> Co-authored-by: Mo Kweon <[email protected]>
1 parent 3d48b3e commit d5144b7

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

client/lib/widgets/detail/recommendation.dart

+25-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:intl/intl.dart';
33
import 'package:pr12er/protos/pkg/pr12er/messages.pb.dart';
4+
import 'package:url_launcher/url_launcher.dart';
45

56
class RecommendationWidget extends StatelessWidget {
67
final Detail detail;
@@ -24,20 +25,36 @@ class RecommendationWidget extends StatelessWidget {
2425
SizedBox(
2526
height: 150,
2627
child: ListView.builder(
27-
physics: const NeverScrollableScrollPhysics(),
2828
itemCount: refPapers.length,
2929
itemBuilder: (BuildContext context, int index) =>
30-
getItemCard(refPapers[index])))
30+
getItemCard(context, refPapers[index])))
3131
]),
3232
);
3333
}
3434

35-
Widget getItemCard(Paper paper) {
36-
return Card(
37-
child: ListTile(
38-
title: Text(paper.title),
39-
subtitle: Text(
40-
"${paper.authors[0]} | ${DateFormat.yMd().format(paper.publishedDate.toDateTime())}")));
35+
Widget getItemCard(BuildContext context, Paper paper) {
36+
return GestureDetector(
37+
onTap: () async {
38+
if (await canLaunch("https://arxiv.org/abs/${paper.arxivId}")) {
39+
await launch("https://arxiv.org/abs/${paper.arxivId}");
40+
return;
41+
}
42+
ScaffoldMessenger.of(context).removeCurrentSnackBar();
43+
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
44+
backgroundColor: Theme.of(context).colorScheme.error,
45+
content: Text("https://arxiv.org/abs/${paper.arxivId} is not a valid URL"),
46+
action: SnackBarAction(
47+
label: "OK",
48+
textColor: Theme.of(context).colorScheme.onError,
49+
onPressed: (){},
50+
),
51+
));
52+
},
53+
child: Card(
54+
child: ListTile(
55+
title: Text(paper.title),
56+
subtitle: Text(
57+
"${paper.authors[0]} | ${DateFormat.yMd().format(paper.publishedDate.toDateTime())}"))));
4158
}
4259

4360
List<Paper> getReferencePapers(Detail detail) {

0 commit comments

Comments
 (0)