diff --git a/lib/screens/onboarding/bloc/onboarding_bloc.dart b/lib/screens/onboarding/bloc/onboarding_bloc.dart index e953583..e5265e1 100644 --- a/lib/screens/onboarding/bloc/onboarding_bloc.dart +++ b/lib/screens/onboarding/bloc/onboarding_bloc.dart @@ -5,12 +5,18 @@ import 'onboarding_event.dart'; import 'onboarding_state.dart'; class OnboardingBloc extends Bloc { - OnboardingBloc() : super(OnboardingInitial()); + OnboardingBloc() : super(OnboardingInitial()) { + on((event, emit) { + emit(PageChangedState(counter: event.index)); + }); + } int pageIndex = 0; final pageController = PageController(initialPage: 0); + + @override Stream mapEventToState( OnboardingEvent event, @@ -29,7 +35,7 @@ class OnboardingBloc extends Bloc { ); yield PageChangedState(counter: pageIndex); - } else if (event is PageSwipedEvent) { + } else if (event is PageChangedEvent) { pageIndex = event.index; yield PageChangedState(counter: pageIndex); } diff --git a/lib/screens/onboarding/bloc/onboarding_event.dart b/lib/screens/onboarding/bloc/onboarding_event.dart index 9843cbc..a880ee7 100644 --- a/lib/screens/onboarding/bloc/onboarding_event.dart +++ b/lib/screens/onboarding/bloc/onboarding_event.dart @@ -6,11 +6,7 @@ import 'package:flutter/material.dart'; abstract class OnboardingEvent {} class PageChangedEvent extends OnboardingEvent { - -} - -class PageSwipedEvent extends OnboardingEvent { final int index; - PageSwipedEvent({required this.index}); + PageChangedEvent({required this.index}); } \ No newline at end of file diff --git a/lib/screens/onboarding/widget/onboarding_content.dart b/lib/screens/onboarding/widget/onboarding_content.dart index 1fefe46..626746d 100644 --- a/lib/screens/onboarding/widget/onboarding_content.dart +++ b/lib/screens/onboarding/widget/onboarding_content.dart @@ -16,6 +16,7 @@ class OnboardingContent extends StatelessWidget { return SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.center, + spacing: 20, children: [ Expanded( flex: 4, @@ -36,22 +37,20 @@ class OnboardingContent extends StatelessWidget { controller: controller, children: DataConstants.onboardingTiles, onPageChanged: (index) { - bloc.add(PageSwipedEvent(index: index)); + bloc.add(PageChangedEvent(index: index)); }, ); } Widget _createStatic(OnboardingBloc bloc) { return Column( + spacing: 10, children: [ - SizedBox( - height: 30, - ), BlocBuilder( buildWhen: (_, currState) => currState is PageChangedState, builder: (context, state) { return DotsIndicator( - dotsCount: 3, + dotsCount: DataConstants.onboardingTiles.length, position: bloc.pageIndex.toDouble(), decorator: DotsDecorator( color: Colors.grey, @@ -60,7 +59,6 @@ class OnboardingContent extends StatelessWidget { ); }, ), - Spacer(), BlocBuilder( buildWhen: (_, currState) => currState is PageChangedState, builder: (context, state) { @@ -69,7 +67,7 @@ class OnboardingContent extends StatelessWidget { tween: Tween(begin: 0, end: percent), duration: Duration(seconds: 1), builder: (context, value, _) => CircularPercentIndicator( - radius: 110, + radius: 60, backgroundColor: ColorConstants.primaryColor, progressColor: Colors.white, percent: 1 - value, @@ -79,7 +77,7 @@ class OnboardingContent extends StatelessWidget { child: RawMaterialButton( shape: CircleBorder(), onPressed: () { - bloc.add(PageChangedEvent()); + bloc.add(PageChangedEvent(index: 2)); }, child: Padding( padding: const EdgeInsets.all(24.0), @@ -94,7 +92,6 @@ class OnboardingContent extends StatelessWidget { )); }, ), - SizedBox(height: 30), ], ); } diff --git a/pubspec.lock b/pubspec.lock index 20285c1..f1ca45f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -57,6 +57,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dots_indicator: + dependency: "direct main" + description: + name: dots_indicator + sha256: c070af5058a084ba7b354df4b4c26c719595d70a3531eea6edd8af8716684ba3 + url: "https://pub.dev" + source: hosted + version: "4.0.1" fake_async: dependency: transitive description: @@ -163,6 +171,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + percent_indicator: + dependency: "direct main" + description: + name: percent_indicator + sha256: "157d29133bbc6ecb11f923d36e7960a96a3f28837549a20b65e5135729f0f9fd" + url: "https://pub.dev" + source: hosted + version: "4.2.5" provider: dependency: transitive description: