Skip to content
Snippets Groups Projects
Commit 956d7e3a authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Allow swipe to navigate between pages

parent 5d677b31
No related branches found
No related tags found
1 merge request!36Resolve "Swipe to navigate"
Pipeline #4549 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=1.0.27 app.versionName=1.0.28
app.versionCode=28 app.versionCode=29
...@@ -5,6 +5,9 @@ class BottomNavCubit extends HydratedCubit<int> { ...@@ -5,6 +5,9 @@ class BottomNavCubit extends HydratedCubit<int> {
void updateIndex(int index) => emit(index); void updateIndex(int index) => emit(index);
void movePrevious() => emit((state > 0) ? state - 1 : state);
void moveNext() => emit((state < 3) ? state + 1 : state);
void getDemoPage() => emit(0); void getDemoPage() => emit(0);
void getGraphPage() => emit(1); void getGraphPage() => emit(1);
void getSettingsPage() => emit(2); void getSettingsPage() => emit(2);
......
...@@ -33,6 +33,16 @@ class _SkeletonScreenState extends State<SkeletonScreen> { ...@@ -33,6 +33,16 @@ class _SkeletonScreenState extends State<SkeletonScreen> {
create: (BuildContext context) => SettingsCubit(), create: (BuildContext context) => SettingsCubit(),
child: BlocProvider<BottomNavCubit>( child: BlocProvider<BottomNavCubit>(
create: (BuildContext context) => BottomNavCubit(), create: (BuildContext context) => BottomNavCubit(),
child: BlocBuilder<BottomNavCubit, int>(
builder: (BuildContext context, int state) {
return GestureDetector(
onHorizontalDragEnd: (dragDetail) {
if (dragDetail.velocity.pixelsPerSecond.dx < 1) {
context.read<BottomNavCubit>().moveNext();
} else {
context.read<BottomNavCubit>().movePrevious();
}
},
child: Scaffold( child: Scaffold(
extendBodyBehindAppBar: false, extendBodyBehindAppBar: false,
appBar: StandardAppBar(), appBar: StandardAppBar(),
...@@ -40,12 +50,16 @@ class _SkeletonScreenState extends State<SkeletonScreen> { ...@@ -40,12 +50,16 @@ class _SkeletonScreenState extends State<SkeletonScreen> {
builder: (BuildContext context, int state) { builder: (BuildContext context, int state) {
return AnimatedSwitcher( return AnimatedSwitcher(
duration: const Duration(milliseconds: 300), duration: const Duration(milliseconds: 300),
child: pageNavigation.elementAt(state)); child: pageNavigation.elementAt(state),
);
}, },
), ),
bottomNavigationBar: const BottomNavBar(), bottomNavigationBar: const BottomNavBar(),
backgroundColor: Theme.of(context).colorScheme.background, backgroundColor: Theme.of(context).colorScheme.background,
), ),
);
},
),
), ),
); );
} }
......
...@@ -21,7 +21,8 @@ class BottomNavBar extends StatelessWidget { ...@@ -21,7 +21,8 @@ class BottomNavBar extends StatelessWidget {
topRight: Radius.circular(16), topRight: Radius.circular(16),
), ),
), ),
child: BlocBuilder<BottomNavCubit, int>(builder: (BuildContext context, int state) { child: BlocBuilder<BottomNavCubit, int>(
builder: (BuildContext context, int state) {
return BottomNavigationBar( return BottomNavigationBar(
currentIndex: state, currentIndex: state,
onTap: (int index) => context.read<BottomNavCubit>().updateIndex(index), onTap: (int index) => context.read<BottomNavCubit>().updateIndex(index),
...@@ -49,7 +50,8 @@ class BottomNavBar extends StatelessWidget { ...@@ -49,7 +50,8 @@ class BottomNavBar extends StatelessWidget {
), ),
], ],
); );
}), },
),
); );
} }
} }
...@@ -3,7 +3,7 @@ description: A random application, for testing purpose only. ...@@ -3,7 +3,7 @@ description: A random application, for testing purpose only.
publish_to: 'none' publish_to: 'none'
version: 1.0.27+28 version: 1.0.28+29
environment: environment:
sdk: '^3.0.0' sdk: '^3.0.0'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment