tutorial.dart 1.30 KiB
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';
import 'ui_helpers.dart';
abstract class Tutorial {
Tutorial({
required this.tutorialId,
required this.context,
}) {
_tutorial = TutorialCoachMark(
targets: createTargets(),
// colorShadow: Colors.red,
textSkip: tr('skip').toUpperCase(),
// hideSkip: true,
// paddingFocus: 10,
// opacityShadow: 0.8,
onFinish: () {
context.read<AppCubit>().onFinishTutorial(tutorialId);
},
onClickTarget: (TargetFocus target) {},
onClickTargetWithTapPosition:
(TargetFocus target, TapDownDetails tapDetails) {},
onClickOverlay: (TargetFocus target) {},
onSkip: () {
context.read<AppCubit>().onFinishTutorial(tutorialId);
},
);
}
late TutorialCoachMark _tutorial;
final BuildContext context;
final String tutorialId;
bool showAlways = false;
List<TargetFocus> createTargets();
void showTutorial() {
if ((inDevelopment && showAlways) ||
!context.read<AppCubit>().wasTutorialShown(tutorialId)) {
_tutorial.show(context: context);
}
}
}