First draft of Onboarding page

This commit is contained in:
2025-11-13 19:33:58 +01:00
parent 037b8136d9
commit da52453371
22 changed files with 371 additions and 14 deletions

View 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);
}
}
}

View 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});
}

View 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 {}