From 2b11a9af9f98f5c1e6e02eb8b8af2d45761986ff Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Tue, 15 Aug 2023 19:29:12 +0200 Subject: [PATCH] Tutorials only on request --- lib/ui/screens/fifth_screen.dart | 10 ++++++---- lib/ui/screens/fourth_screen.dart | 15 --------------- lib/ui/screens/second_screen.dart | 17 +++++++++++------ lib/ui/screens/third_screen.dart | 12 +++++++----- lib/ui/tutorial.dart | 3 +-- lib/ui/widgets/first_screen/first_tutorial.dart | 11 +++++++++-- .../widgets/fourth_screen/transaction_page.dart | 10 ++++++++++ 7 files changed, 44 insertions(+), 34 deletions(-) diff --git a/lib/ui/screens/fifth_screen.dart b/lib/ui/screens/fifth_screen.dart index 9e64c177..73f5a650 100644 --- a/lib/ui/screens/fifth_screen.dart +++ b/lib/ui/screens/fifth_screen.dart @@ -6,7 +6,6 @@ import 'package:share_plus/share_plus.dart'; import '../../data/models/app_cubit.dart'; import '../../data/models/app_state.dart'; -import '../../data/models/bottom_nav_cubit.dart'; import '../../data/models/theme_cubit.dart'; import '../../shared_prefs.dart'; import '../tutorial.dart'; @@ -37,9 +36,6 @@ class _FifthScreenState extends State<FifthScreen> { @override void initState() { tutorial = FifthTutorial(context); - if (context.read<BottomNavCubit>().state == 4) { - Future<void>.delayed(Duration.zero, () => tutorial.showTutorial()); - } super.initState(); } @@ -63,6 +59,12 @@ class _FifthScreenState extends State<FifthScreen> { : ThemeMode.dark)); }, ), + IconButton( + icon: const Icon(Icons.info_outline), + onPressed: () { + tutorial.showTutorial(showAlways: true); + }, + ), const SizedBox(width: 10), ], ), diff --git a/lib/ui/screens/fourth_screen.dart b/lib/ui/screens/fourth_screen.dart index b3eb58d2..656e6acc 100644 --- a/lib/ui/screens/fourth_screen.dart +++ b/lib/ui/screens/fourth_screen.dart @@ -1,9 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import '../../data/models/bottom_nav_cubit.dart'; -import '../tutorial.dart'; -import '../widgets/fourth_screen/fourth_tutorial.dart'; import '../widgets/fourth_screen/transaction_page.dart'; class FourthScreen extends StatefulWidget { @@ -14,17 +10,6 @@ class FourthScreen extends StatefulWidget { } class _FourthScreenState extends State<FourthScreen> { - late Tutorial tutorial; - - @override - void initState() { - super.initState(); - if (context.read<BottomNavCubit>().state == 3) { - tutorial = FourthTutorial(context); - Future<void>.delayed(Duration.zero, () => tutorial.showTutorial()); - } - } - @override Widget build(BuildContext context) { return const TransactionsAndBalanceWidget(); diff --git a/lib/ui/screens/second_screen.dart b/lib/ui/screens/second_screen.dart index 1f439fc4..99d5c6fc 100644 --- a/lib/ui/screens/second_screen.dart +++ b/lib/ui/screens/second_screen.dart @@ -1,8 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import '../../data/models/bottom_nav_cubit.dart'; import '../tutorial.dart'; import '../widgets/card_drawer.dart'; import '../widgets/second_screen/card_terminal.dart'; @@ -21,16 +19,23 @@ class _SecondScreenState extends State<SecondScreen> { @override void initState() { tutorial = SecondTutorial(context); - if (context.read<BottomNavCubit>().state == 1) { - Future<void>.delayed(Duration.zero, () => tutorial.showTutorial()); - } super.initState(); } @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(tr('receive_g1'))), + appBar: AppBar( + title: Text(tr('receive_g1')), + actions: <Widget>[ + IconButton( + icon: const Icon(Icons.info_outline), + onPressed: () { + tutorial.showTutorial(showAlways: true); + }, + ), + ], + ), drawer: const CardDrawer(), body: const Column(children: <Widget>[SizedBox(height: 2), CardTerminal()]), diff --git a/lib/ui/screens/third_screen.dart b/lib/ui/screens/third_screen.dart index bfb5f0ea..2299b36c 100644 --- a/lib/ui/screens/third_screen.dart +++ b/lib/ui/screens/third_screen.dart @@ -2,7 +2,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import '../../data/models/bottom_nav_cubit.dart'; import '../../data/models/contact.dart'; import '../../data/models/contact_cubit.dart'; import '../../g1/g1_helper.dart'; @@ -29,9 +28,6 @@ class _ThirdScreenState extends State<ThirdScreen> { @override void initState() { tutorial = ThirdTutorial(context); - if (context.read<BottomNavCubit>().state == 2) { - Future<void>.delayed(Duration.zero, () => tutorial.showTutorial()); - } super.initState(); } @@ -56,7 +52,7 @@ class _ThirdScreenState extends State<ThirdScreen> { final String? pubKey = await QrManager.qrScan(context); if (pubKey != null && validateKey(pubKey)) { final Contact contact = - await ContactsCache().getContact(pubKey); + await ContactsCache().getContact(pubKey); if (!mounted) { return; } @@ -85,6 +81,12 @@ class _ThirdScreenState extends State<ThirdScreen> { ); } }), + IconButton( + icon: const Icon(Icons.info_outline), + onPressed: () { + tutorial.showTutorial(showAlways: true); + }, + ), const SizedBox(width: 5), ]), drawer: const CardDrawer(), diff --git a/lib/ui/tutorial.dart b/lib/ui/tutorial.dart index 689f6b66..54aac1fc 100644 --- a/lib/ui/tutorial.dart +++ b/lib/ui/tutorial.dart @@ -34,11 +34,10 @@ abstract class Tutorial { late TutorialCoachMark _tutorial; final BuildContext context; final String tutorialId; - bool showAlways = false; List<TargetFocus> createTargets(); - void showTutorial() { + void showTutorial({bool showAlways = false}) { if ((inDevelopment && showAlways) || !context.read<AppCubit>().wasTutorialShown(tutorialId)) { _tutorial.show(context: context); diff --git a/lib/ui/widgets/first_screen/first_tutorial.dart b/lib/ui/widgets/first_screen/first_tutorial.dart index 91263de2..1063f633 100644 --- a/lib/ui/widgets/first_screen/first_tutorial.dart +++ b/lib/ui/widgets/first_screen/first_tutorial.dart @@ -7,14 +7,21 @@ import '../../tutorial_keys.dart'; import '../../tutorial_target.dart'; class FirstTutorial extends Tutorial { - FirstTutorial(BuildContext context) + FirstTutorial(BuildContext context, this.onPress) : super(tutorialId: 'first_screen', context: context); + final bool onPress; @override List<TargetFocus> createTargets() { final List<TargetFocus> targets = <TargetFocus>[]; targets.add(TutorialTarget( - identify: !kIsWeb ? 'creditCardKey' : 'creditCardKey_web', + identify: onPress + ? !kIsWeb + ? 'creditCardKey_button' + : 'creditCardKey_button_web' + : !kIsWeb + ? 'creditCardKey' + : 'creditCardKey_web', keyTarget: creditCardKey, shape: ShapeLightFocus.RRect, )); diff --git a/lib/ui/widgets/fourth_screen/transaction_page.dart b/lib/ui/widgets/fourth_screen/transaction_page.dart index 6e1cea3b..628e2d2d 100644 --- a/lib/ui/widgets/fourth_screen/transaction_page.dart +++ b/lib/ui/widgets/fourth_screen/transaction_page.dart @@ -19,8 +19,10 @@ import '../../../data/models/transactions_bloc.dart'; import '../../../g1/currency.dart'; import '../../../shared_prefs.dart'; import '../../logger.dart'; +import '../../tutorial.dart'; import '../../tutorial_keys.dart'; import '../../ui_helpers.dart'; +import 'fourth_tutorial.dart'; import 'transaction_item.dart'; class TransactionsAndBalanceWidget extends StatefulWidget { @@ -50,6 +52,7 @@ class _TransactionsAndBalanceWidgetState final int _pendingPageSize = 30; final Cron cron = Cron(); static const double balanceFontSize = 36.0; + late Tutorial tutorial; @override void initState() { @@ -106,6 +109,7 @@ class _TransactionsAndBalanceWidgetState logger('---------- fetchTransactions via cron'); _refresh(); }); + tutorial = FourthTutorial(context); super.initState(); } @@ -183,6 +187,12 @@ class _TransactionsAndBalanceWidgetState Backdrop.of(lContext).concealBackLayer(); } })), + IconButton( + icon: const Icon(Icons.info_outline), + onPressed: () { + tutorial.showTutorial(showAlways: true); + }, + ), const SizedBox(width: 10), ], ), -- GitLab