Change Events
This commit is contained in:
@@ -5,12 +5,18 @@ import 'onboarding_event.dart';
|
||||
import 'onboarding_state.dart';
|
||||
|
||||
class OnboardingBloc extends Bloc<OnboardingEvent, OnboardingState> {
|
||||
OnboardingBloc() : super(OnboardingInitial());
|
||||
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,
|
||||
@@ -29,7 +35,7 @@ class OnboardingBloc extends Bloc<OnboardingEvent, OnboardingState> {
|
||||
);
|
||||
|
||||
yield PageChangedState(counter: pageIndex);
|
||||
} else if (event is PageSwipedEvent) {
|
||||
} else if (event is PageChangedEvent) {
|
||||
pageIndex = event.index;
|
||||
yield PageChangedState(counter: pageIndex);
|
||||
}
|
||||
|
||||
@@ -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});
|
||||
}
|
||||
@@ -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<OnboardingBloc, OnboardingState>(
|
||||
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<OnboardingBloc, OnboardingState>(
|
||||
buildWhen: (_, currState) => currState is PageChangedState,
|
||||
builder: (context, state) {
|
||||
@@ -69,7 +67,7 @@ class OnboardingContent extends StatelessWidget {
|
||||
tween: Tween<double>(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),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
16
pubspec.lock
16
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:
|
||||
|
||||
Reference in New Issue
Block a user