43 lines
1.0 KiB
Dart
43 lines
1.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
import 'onboarding_event.dart';
|
|
import 'onboarding_state.dart';
|
|
|
|
class OnboardingBloc extends Bloc<OnboardingEvent, OnboardingState> {
|
|
OnboardingBloc() : super(OnboardingInitial()) {
|
|
on<PageChangedEvent>((event, emit) {
|
|
emit(PageChangedState(counter: event.index));
|
|
});
|
|
}
|
|
|
|
int pageIndex = 0;
|
|
|
|
final pageController = PageController(initialPage: 0);
|
|
|
|
|
|
|
|
@override
|
|
Stream<OnboardingState> mapEventToState(
|
|
OnboardingEvent event,
|
|
) async* {
|
|
if (event is PageChangedEvent) {
|
|
if (pageIndex == 2) {
|
|
yield NextScreenState();
|
|
return;
|
|
}
|
|
pageIndex += 1;
|
|
|
|
pageController.animateToPage(
|
|
pageIndex,
|
|
duration: Duration(milliseconds: 500),
|
|
curve: Curves.ease,
|
|
);
|
|
|
|
yield PageChangedState(counter: pageIndex);
|
|
} else if (event is PageChangedEvent) {
|
|
pageIndex = event.index;
|
|
yield PageChangedState(counter: pageIndex);
|
|
}
|
|
}
|
|
} |