💭Tutorial de Início de APP
Construindo um tutorial de início de aplicação
A biblioteca tutorial_coach_mark
é uma ferramenta útil para criar tutoriais interativos que guiam os usuários através das funcionalidades do seu aplicativo. Este tutorial fornecerá uma explicação detalhada dos passos necessários para usar essa biblioteca.
Passo 1: Instalação
Antes de tudo, é necessário adicionar a dependência tutorial_coach_mark
ao arquivo pubspec.yaml
do seu projeto. A dependência permite que você utilize as funcionalidades da biblioteca para criar tutoriais interativos.
dependencies:
flutter:
sdk: flutter
tutorial_coach_mark: ^latest_version
Lembre-se de executar o comando flutter pub get
para atualizar suas dependências.
Passo 2: Criando o Serviço de Tutorial
Comece criando um serviço para gerenciar a lógica do tutorial. Vamos utilizar a classe TutorialService
. Esta classe conterá os atributos e métodos necessários para configurar e mostrar o tutorial.
// tutorial_service.dart
import 'package:flutter/material.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
class TutorialService {
bool doingTutorial = false;
TutorialCoachMark? tutorial;
// Outros atributos e métodos do serviço
}
Passo 3: Configurando os Passos do Tutorial
Agora, vamos configurar os passos individuais do tutorial. Para isso, usaremos a classe TargetFocus
para definir cada etapa do tutorial. Cada etapa incluirá um alvo (widget ou áres na tela) que será definido por uma GlobalKey associada a ele.
// tutorial_service.dart
class TutorialService {
// ...
// Definindo as chaves para os passos
final GlobalKey step1Key = GlobalKey();
final GlobalKey step2Key = GlobalKey();
final GlobalKey step3Key = GlobalKey();
final GlobalKey step4Key = GlobalKey();
final GlobalKey step5Key = GlobalKey();
final GlobalKey step6Key = GlobalKey();
final GlobalKey step7Key = GlobalKey();
final GlobalKey step8Key = GlobalKey();
void createTutorial(BuildContext context) {
List<TargetFocus> targets = [
step1,
step2,
step3,
step4,
step5,
step6,
step7,
step8,
];
tutorial = TutorialCoachMark(
targets: targets,
textSkip: "Pular",
textStyleSkip: TextStyle(color: Colors.white),
colorShadow: Colors.black,
opacityShadow: 0.8,
onFinish: () {
doingTutorial = false;
setTutorial(true);
debugPrint("Tutorial concluído!");
},
// Mais configurações...
);
}
TargetFocus get step1 => TargetFocus(
identify: "step1",
// Defina o widget alvo através de uma GlobalKey
// Essa deverá ser a key do widget relacionado a esse passo
keyTarget: step1Key,
targetPosition: TargetPosition(Size(1, 1), Offset(0, 0)),
contents: [
TargetContent(
align: ContentAlign.custom,
customPosition: CustomTargetContentPosition(
bottom: 0, left: 0, right: 0, top: 0),
builder: (context, controller) => GestureDetector(
onTap: () => tutorial?.next(),
child: Image.asset("assets/ts_1.png"),
),
),
],
);
// Defina os outros passos (step2, step3, etc.) da mesma forma
}
Passo 4: Iniciando o Tutorial
Para iniciar o tutorial, você deve chamar o método createTutorial
no local apropriado (geralmente quando a primeira tela do app é carregada) e, em seguida, exibir o tutorial usando o método showTutorial
:
// skeleton_screen.dart
class _SkeletonScreenState extends State<SkeletonScreen> {
final TutorialService _tutorialService = TutorialService();
@override
void initState() {
// ...
WidgetsBinding.instance.addPostFrameCallback((_) async {
var completedTutorial = await _tutorialService.tutorialCompleted();
if (!completedTutorial) {
_tutorialService.createTutorial(context);
_tutorialService.showTutorial(context);
}
});
super.initState();
}
// ...
}
Passo 5: Avançando entre os Passos
Nos passos do tutorial, você pode definir ações personalizadas que ocorrerão quando um passo específico for clicado. No nosso exemplo, usamos o método _handleTargetClick
para lidar com ações específicas para cada etapa do tutorial. Lembre-se de sempre garantir que o widget alvo de um passo seja construído antes desse passo acontecer.
// tutorial_service.dart
class TutorialService {
// ...
void _handleTargetClick(TargetFocus target) {
switch (target.identify) {
case "step3":
GetIt.I.get<SkeletonStore>().animateToPage(2);
break;
case "step5":
Navigator.of(context).pushNamed(DiaryWeeklyReviewScreen.routeName);
break;
case "step6":
Navigator.of(context).pop();
break;
case "step7":
GetIt.I.get<SkeletonStore>().animateToPage(4);
break;
// ...
default:
}
}
// ...
}
Passo 6: Finalizando o Tutorial
Quando o usuário concluir o tutorial ou optar por pular, você pode finalizá-lo. No nosso exemplo, usamos o método onFinish
na configuração do TutorialCoachMark
para lidar com a conclusão.
// tutorial_service.dart
class TutorialService {
// ...
void createTutorial(BuildContext context) {
// ...
tutorial = TutorialCoachMark(
targets: targets,
onFinish: () {
doingTutorial = false;
setTutorial(true);
debugPrint("Tutorial finalizado!");
},
// ...
);
}
// ...
}

Conclusão
Parabéns! Você aprendeu a usar a biblioteca tutorial_coach_mark
para criar tutoriais interativos em sua aplicação Flutter. Usando este guia passo a passo, você pode configurar, iniciar, avançar e finalizar tutoriais que guiam os usuários através das funcionalidades do seu aplicativo. Personalize os passos e as ações de acordo com as necessidades da sua aplicação para fornecer uma experiência de usuário excepcional. Para mais detalhes e opções avançadas, consulte a documentação oficial da biblioteca.
Last updated