targetFocus function

dynamic targetFocus({
  1. required String identify,
  2. required dynamic keyTarget,
  3. required String contentTitle,
  4. required String contentDescription,
  5. String? contentImageUrl,
  6. dynamic iconData,
  7. double iconSize = 150,
  8. dynamic shape,
  9. double? paddingFocus,
  10. dynamic contentAlign = ContentAlign.bottom,
  11. dynamic alignSkip = Alignment.topRight,
  12. bool isFirst = false,
  13. bool isLast = false,
})

Implementation

TargetFocus targetFocus({
  required String identify,
  required GlobalKey keyTarget,
  required String contentTitle,
  required String contentDescription,
  String? contentImageUrl,
  IconData? iconData,
  double iconSize = 150,
  ShapeLightFocus? shape,
  double? paddingFocus,
  ContentAlign contentAlign = ContentAlign.bottom,
  AlignmentGeometry? alignSkip = Alignment.topRight,
  bool isFirst = false,
  bool isLast = false,
}) {
  return TargetFocus(
    identify: identify,
    keyTarget: keyTarget,
    shape: shape,
    paddingFocus: paddingFocus,
    alignSkip: alignSkip,
    contents: [
      TargetContent(
        align: contentAlign,
        builder: (context, controller) {
          return Column(
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              if (contentImageUrl != null)
                SvgPicture.asset(
                  contentImageUrl,
                  semanticsLabel: 'state',
                  height: 150,
                  width: 150,
                ),
              if (iconData != null)
                Icon(
                  iconData,
                  size: iconSize,
                ),
              if (contentImageUrl != null || iconData != null)
                const SizedBox(height: 50),
              Text(
                contentTitle,
                style: Theme.of(context).textTheme.titleLarge,
              ),
              Text(
                contentDescription,
                style: Theme.of(context).textTheme.labelLarge,
              ),
              const SizedBox(height: 20),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  if (!isFirst)
                    TextButton(
                      onPressed: () => controller.previous(),
                      child: Text(L10n.of(context).previous),
                    )
                  else
                    const Spacer(),
                  TextButton(
                    onPressed: () => controller.next(),
                    child: Text(
                      isLast ? L10n.of(context).finish : L10n.of(context).next,
                    ),
                  ),
                ],
              ),
            ],
          );
        },
      ),
    ],
  );
}