import 'package:anyway/modules/onboarding_card.dart'; import 'package:anyway/pages/new_trip_location.dart'; import 'package:flutter/material.dart'; const List onboardingCards = [ OnboardingCard( title: "Welcome to anyway!", description: "Anyway helps you plan a city trip that suits your wishes.", imagePath: "assets/city.svg" ), OnboardingCard( title: "Find your way", description: "Bored by churches? No problem! Hate shopping? No worries! Instead of suggesting the generic trips that bore you, anyway will try to give you recommendations that really suit you.", imagePath: "assets/plan.svg" ), OnboardingCard( title: "Change your mind", 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" ), 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 { const OnboardingPage({super.key}); @override State createState() => _OnboardingPageState(); } class _OnboardingPageState extends State { @override Widget build(BuildContext context) { final PageController _controller = PageController(); return Scaffold( body: Stack( children: [ Container( decoration: BoxDecoration( gradient: LinearGradient( colors: [Colors.red, Colors.blue], begin: Alignment.topLeft, end: Alignment.bottomRight, ), ), child: PageView( controller: _controller, children: List.generate( onboardingCards.length, (index) { return Container( alignment: Alignment.center, child: onboardingCards[index], ); } ), ), ), ], ), floatingActionButton: FloatingActionButton.extended( onPressed: () { if (_controller.page == onboardingCards.length - 1) { Navigator.of(context).push( MaterialPageRoute( builder: (context) => const NewTripPage() ) ); } else { _controller.nextPage(duration: Duration(milliseconds: 500), curve: Curves.ease); } }, label: ListenableBuilder( listenable: _controller, builder: (context, child) { if (_controller.page == onboardingCards.length - 1) { return Row( children: [ const Text("Start planning!"), Padding(padding: const EdgeInsets.only(right: 8.0)), const Icon(Icons.map_outlined) ], ); } else { return const Icon(Icons.arrow_forward); } } ) ), ); } }