Skip to content
Snippets Groups Projects
tutorial.dart 1.26 KiB
Newer Older
vjrj's avatar
vjrj committed
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';

import '../data/models/app_cubit.dart';

abstract class Tutorial {
  Tutorial({
    required this.tutorialId,
    required this.context,
  }) {
    _tutorial = TutorialCoachMark(
      targets: createTargets(),
      // colorShadow: Colors.red,
      textSkip: tr('skip').toUpperCase(),
vjrj's avatar
vjrj committed
      // hideSkip: true,
vjrj's avatar
vjrj committed
      // paddingFocus: 10,
      // opacityShadow: 0.8,
      onFinish: () {
        context.read<AppCubit>().onFinishTutorial(tutorialId);
      },
      onClickTarget: (TargetFocus target) {},
      onClickTargetWithTapPosition:
          (TargetFocus target, TapDownDetails tapDetails) {},
      onClickOverlay: (TargetFocus target) {},
      onSkip: () {
        return context.read<AppCubit>().onFinishTutorial(tutorialId);
vjrj's avatar
vjrj committed
      },
    );
  }

  late TutorialCoachMark _tutorial;
  final BuildContext context;
  final String tutorialId;

  List<TargetFocus> createTargets();

vjrj's avatar
vjrj committed
  void showTutorial({bool showAlways = false}) {
    if (showAlways || !context.read<AppCubit>().wasTutorialShown(tutorialId)) {
vjrj's avatar
vjrj committed
      _tutorial.show(context: context);
    }
  }
}