First draft of Onboarding page
This commit is contained in:
37
lib/screens/onboarding/bloc/onboarding_bloc.dart
Normal file
37
lib/screens/onboarding/bloc/onboarding_bloc.dart
Normal file
@@ -0,0 +1,37 @@
|
||||
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());
|
||||
|
||||
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 PageSwipedEvent) {
|
||||
pageIndex = event.index;
|
||||
yield PageChangedState(counter: pageIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
16
lib/screens/onboarding/bloc/onboarding_event.dart
Normal file
16
lib/screens/onboarding/bloc/onboarding_event.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
//part of 'onboarding_bloc.dart';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@immutable
|
||||
abstract class OnboardingEvent {}
|
||||
|
||||
class PageChangedEvent extends OnboardingEvent {
|
||||
|
||||
}
|
||||
|
||||
class PageSwipedEvent extends OnboardingEvent {
|
||||
final int index;
|
||||
|
||||
PageSwipedEvent({required this.index});
|
||||
}
|
||||
18
lib/screens/onboarding/bloc/onboarding_state.dart
Normal file
18
lib/screens/onboarding/bloc/onboarding_state.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
//part of 'onboarding_bloc.dart';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@immutable
|
||||
abstract class OnboardingState {}
|
||||
|
||||
class OnboardingInitial extends OnboardingState {}
|
||||
|
||||
class PageChangedState extends OnboardingState {
|
||||
final int counter;
|
||||
|
||||
PageChangedState({
|
||||
required this.counter,
|
||||
});
|
||||
}
|
||||
|
||||
class NextScreenState extends OnboardingState {}
|
||||
Reference in New Issue
Block a user