Browse Source

add: intro middleware

pull/31/head
AmirrezaChegini 18 hours ago
parent
commit
c9c85a45ce
  1. 1
      lib/core/constants/my_constants.dart
  2. 12
      lib/core/middlewares/my_middlewares.dart
  3. 1
      lib/core/routers/my_routes.dart
  4. 2
      lib/features/home/presentation/bloc/home_bloc.dart
  5. 9
      lib/features/intro/presentation/bloc/intro_bloc.dart

1
lib/core/constants/my_constants.dart

@ -15,5 +15,6 @@ class MyConstants {
static const String currentLevel = 'CURRENT_LEVEL';
static const String mainAudioService = 'MAIN_AUDIO_SERVICE';
static const String effectAudioService = 'EFFECT_AUDIO_SERVICE';
static const String firstIntro = 'FIRST_INTRO';
static const double mainAudioVolume = 0.3;
}

12
lib/core/middlewares/my_middlewares.dart

@ -11,7 +11,7 @@ class MyMiddlewares {
const MyMiddlewares._internal();
factory MyMiddlewares() => _i;
static FutureOr<String?> splash(BuildContext context, GoRouterState state) {
static FutureOr<String?> splash(BuildContext context, GoRouterState state) {
final String? firstDownload = LocalStorage.readData(
key: MyConstants.firstDownload);
if (firstDownload != 'true') {
@ -20,4 +20,14 @@ class MyMiddlewares {
return null;
}
}
static FutureOr<String?> intro(BuildContext context, GoRouterState state) {
final String? firstIntro = LocalStorage.readData(
key: MyConstants.firstIntro);
if (firstIntro == 'true') {
return Routes.levelPage;
} else {
return null;
}
}
}

1
lib/core/routers/my_routes.dart

@ -47,6 +47,7 @@ GoRouter get appPages => GoRouter(
GoRoute(
name: Routes.introPage,
path: Routes.introPage,
redirect: MyMiddlewares.intro,
builder: (context, state) => BlocProvider(
create: (context) => IntroBloc(),
child: const IntroPage(),

2
lib/features/home/presentation/bloc/home_bloc.dart

@ -45,7 +45,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
orElse: () => TotalDataEntity(),
);
if (findData.levels?.isNotEmpty ?? false) {
context.pushNamed(Routes.levelPage);
context.pushNamed(Routes.introPage);
} else {
context.goNamed(Routes.downloadPage);
}

9
lib/features/intro/presentation/bloc/intro_bloc.dart

@ -3,8 +3,10 @@ import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:flutter/cupertino.dart';
import 'package:go_router/go_router.dart';
import 'package:hadi_hoda_flutter/core/constants/my_constants.dart';
import 'package:hadi_hoda_flutter/core/routers/my_routes.dart';
import 'package:hadi_hoda_flutter/core/utils/context_provider.dart';
import 'package:hadi_hoda_flutter/core/utils/local_storage.dart';
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_event.dart';
import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart';
import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_1_screen.dart';
@ -33,8 +35,11 @@ class IntroBloc extends Bloc<IntroEvent, IntroState> {
/// ------------Controllers------------
/// ------------Functions------------
void goToLevelPage(){
ContextProvider.context.go(Routes.levelPage);
Future<void> goToLevelPage() async {
await LocalStorage.saveData(key: MyConstants.firstIntro, value: 'true');
if (ContextProvider.context.mounted) {
ContextProvider.context.replaceNamed(Routes.levelPage);
}
}
/// ------------Api Calls------------

Loading…
Cancel
Save