createDetailsForItemCallback function
VoidCallback createDetailsForItemCallback(
- BuildContext context,
- dynamic item,
- {List? relatedEntities,
- dynamic shareButtonHeroTag,
- Map queryParams = const {}}
)
Implementation
VoidCallback createDetailsForItemCallback(BuildContext context, var item,
{List? relatedEntities, shareButtonHeroTag, Map queryParams = const {}}) {
if (item is timeline_api.Entity) {
item = item.data;
}
if (item is search_api.Content) {
item = item.data;
}
if (item is timeline_api.Favorite) {
item = item.data;
}
DetailParams? params = DetailParamsFactory.of(context)!.create(context, item);
if (params != null) {
return () {
ContentRoutes.itemDetail
.push(context: context, arguments: params, queryParams: {
'section': RouteUrl.firstPathSegment(context),
'id': item.id,
});
};
}
VoidCallback showInDialogIfLargeFormat(DetailParams params) {
return () {
ContentRoutes.itemDetail
.push(context: context, arguments: params, queryParams: {
'section': RouteUrl.firstPathSegment(context),
'id': item.id,
});
};
}
VoidCallback onTap;
if (item is timeline_api.Event) {
onTap = () {
ContentRoutes.eventDetails.push(context: context, arguments: item);
};
} else if (item is timeline_api.Wisdom) {
if (isLargeFormatLayout(context)) {
onTap = showInDialogIfLargeFormat(DetailParams(
item: item,
itemType: "Wisdom",
screenTitle: "Wisdom",
shareText: formatShareText(item),
shareSubject: formatShareSubject(item, "Wisdom", item.title),
title: (context) {
return 'Quote by ${item.summary}';
},
content: (forceRefresh) {
return Future<String>.value(item.content);
}));
} else {
onTap = () {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
builder: (BuildContext context) {
return DailyWisdom(item: item);
},
);
};
}
} else if (item is timeline_api.Image) {
onTap = () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return Gallery(
galleryItems: [item],
backgroundDecoration: const BoxDecoration(
color: Colors.black,
),
initialIndex: 0,
);
}),
);
};
} else if (item is tag_api.Tag) {
onTap = () {
SearchRoutes.search
.push(context: context, arguments: item, queryParams: queryParams);
};
} else {
onTap = () {
return;
};
}
return onTap;
}