build method

  1. @override
DetailParams build(
  1. BuildContext context,
  2. People item,
  3. {dynamic relatedEntities,
  4. dynamic shareButtonHeroTag,
  5. 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 ?? '');
      });
}