better onboarding
All checks were successful
Build and deploy the backend to staging / Build and push image (pull_request) Successful in 2m1s
Build and release debug APK / Build APK (pull_request) Successful in 10m54s
Build and deploy the backend to staging / Deploy to staging (pull_request) Successful in 14s

This commit is contained in:
Remy Moll 2024-12-02 10:43:42 +01:00
parent 3f1fe463bf
commit 4baf045c8c
3 changed files with 475 additions and 43 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -2,7 +2,6 @@ import 'package:anyway/modules/onboarding_card.dart';
import 'package:anyway/pages/new_trip_location.dart'; import 'package:anyway/pages/new_trip_location.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
const List<Widget> onboardingCards = [ const List<Widget> onboardingCards = [
OnboardingCard( OnboardingCard(
title: "Welcome to anyway!", title: "Welcome to anyway!",
@ -19,9 +18,13 @@ const List<Widget> onboardingCards = [
description: "Feet get sore, the weather changes. Anyway understands that! Move or remove destinations, visit hidden gems along your journey, do your own thing. Anyway adapts to your spontaneous decisions.", description: "Feet get sore, the weather changes. Anyway understands that! Move or remove destinations, visit hidden gems along your journey, do your own thing. Anyway adapts to your spontaneous decisions.",
imagePath: "assets/cat.svg" imagePath: "assets/cat.svg"
), ),
OnboardingCard(
title: "Feeling lost?",
description: "Whenever you are confused or need help with the app, look out for the question mark in the top right corner. Help is just a tap away!",
imagePath: "assets/confused.svg"
),
]; ];
class OnboardingPage extends StatefulWidget { class OnboardingPage extends StatefulWidget {
const OnboardingPage({super.key}); const OnboardingPage({super.key});
@ -37,25 +40,29 @@ class _OnboardingPageState extends State<OnboardingPage> {
return Scaffold( return Scaffold(
body: Stack( body: Stack(
children: [ children: [
// horizontally scrollable list of pages Container(
PageView( decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.red, Colors.blue],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
),
child: PageView(
controller: _controller, controller: _controller,
children: List.generate( children: List.generate(
onboardingCards.length, onboardingCards.length,
(index) { (index) {
Color currentColor = Colors.red.withAlpha(Colors.red.alpha - index * 30);
return Container( return Container(
color: currentColor,
alignment: Alignment.center, alignment: Alignment.center,
child: onboardingCards[index], child: onboardingCards[index],
); );
} }
) ),
),
), ),
], ],
), ),
floatingActionButton: FloatingActionButton.extended( floatingActionButton: FloatingActionButton.extended(
onPressed: () { onPressed: () {
if (_controller.page == onboardingCards.length - 1) { if (_controller.page == onboardingCards.length - 1) {
@ -72,7 +79,6 @@ class _OnboardingPageState extends State<OnboardingPage> {
listenable: _controller, listenable: _controller,
builder: (context, child) { builder: (context, child) {
if (_controller.page == onboardingCards.length - 1) { if (_controller.page == onboardingCards.length - 1) {
// icon and text side by side
return Row( return Row(
children: [ children: [
const Text("Start planning!"), const Text("Start planning!"),
@ -80,7 +86,6 @@ class _OnboardingPageState extends State<OnboardingPage> {
const Icon(Icons.map_outlined) const Icon(Icons.map_outlined)
], ],
); );
} else { } else {
return const Icon(Icons.arrow_forward); return const Icon(Icons.arrow_forward);
} }