build method
- @override
- BuildContext context,
- People item,
- Map queryParams = const {}}
override
Implementation
@override
DetailParams build(BuildContext context, var item,
{relatedEntities, shareButtonHeroTag, Map queryParams = const {}}) {
return DetailParams(
shareButtonHeroTag: shareButtonHeroTag,
item: item,
relatedContent: relatedEntities,
afterTitleBuilder: (BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
DateIndicator<timeline_api.People>(
item: item,
searchTypes: const [
timeline_api.People,
timeline_api.HistoricEvent
],
resolver: (item, [start = false]) {
if (start) {
return item.dateOfBirth!;
} else {
return item.dateOfDeath!;
}
},
),
if (item.occupations?.isNotEmpty ?? false)
...item.occupations!.map((e) => InkWell(
onTap: createDetailsForItemCallback(context, e,
queryParams: {
'tags': e!.name!,
'context': 'occupations'
}),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(e.name!),
)))
],
);
},
afterContentBuilder: (BuildContext context) {
List<TextSpan> spans = [];
if (item.authors != null) {
if (item.authors!.isNotEmpty) {
spans.add(const TextSpan(text: "by "));
}
for (var i = 0; i < item.authors!.length; i++) {
spans.add(TextSpan(
text: item.authors![i]!.name,
recognizer: TapGestureRecognizer()
..onTap = createDetailsForItemCallback(
context, item.authors![i])));
if (i < item.authors!.length - 1) {
spans.add(const TextSpan(text: ", "));
}
}
}
return Padding(
padding: const EdgeInsets.only(top: 30.0),
child: Column(
children: [
RichText(
text: TextSpan(
// Note: Styles for TextSpans must be explicitly defined.
// Child text spans will inherit styles from parent
style: const TextStyle(color: Colors.black, fontSize: 17),
children: spans,
),
),
],
),
);
},
imageUrl:
(item.banner != null) ? item.banner!.url : item.thumbnail?.url,
isAppBarExpandable: (item.banner != null || item.thumbnail != null),
itemType: "People",
screenTitle: "People",
shareText: formatShareText(item),
shareSubject: formatShareSubject(
item, "People", "${item.firstName} ${item.lastName}"),
title: (context) {
return "${item.firstName} ${item.lastName}";
},
content: (forceRefresh) {
return Future<String>.value(item.biography ?? '');
});
}