43 lines
1.3 KiB
Dart
43 lines
1.3 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
/// --- Events ---
|
|
abstract class AppStartEvent {}
|
|
|
|
class CheckFirstTimeUser extends AppStartEvent {}
|
|
class MarkUserAsRegistered extends AppStartEvent {}
|
|
|
|
/// --- States ---
|
|
abstract class AppStartState {}
|
|
|
|
class AppStartLoading extends AppStartState {}
|
|
class AppStartFirstTime extends AppStartState {}
|
|
class AppStartRegistered extends AppStartState {}
|
|
|
|
/// --- Bloc ---
|
|
class AppStartBloc extends Bloc<AppStartEvent, AppStartState> {
|
|
AppStartBloc() : super(AppStartLoading()) {
|
|
on<CheckFirstTimeUser>(_onCheckFirstTimeUser);
|
|
on<MarkUserAsRegistered>(_onMarkUserAsRegistered);
|
|
}
|
|
|
|
Future<void> _onCheckFirstTimeUser(
|
|
CheckFirstTimeUser event, Emitter<AppStartState> emit) async {
|
|
emit(AppStartLoading());
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final isFirstTime = prefs.getBool('isFirstTimeUser') ?? true;
|
|
if (isFirstTime) {
|
|
emit(AppStartFirstTime());
|
|
} else {
|
|
emit(AppStartRegistered());
|
|
}
|
|
}
|
|
|
|
Future<void> _onMarkUserAsRegistered(
|
|
MarkUserAsRegistered event, Emitter<AppStartState> emit) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setBool('isFirstTimeUser', false);
|
|
emit(AppStartRegistered());
|
|
}
|
|
}
|