Journey Stepper package lets you add a beautiful timeline based on the current data to your Flutter app.
Installation
- Add the latest version of package to your pubspec.yaml (and rundart pub get):
dependencies:
journey_stepper: ^0.0.11
- Import the package and use it in your Flutter App.
import 'package:journey_stepper/journey_stepper.dart';
Feature
- A fully customizable,beautiful and easy to use these widget on the different scenario.
- There are various type of properties that you can modify some of them are
- leftTitle => to show any widget on the left part
- rightTitle => to show any widget on the right part
- icon => to show the icon on the vertical stepper
- iconBackgroundColor=> to show the icon color on the vertical bar
- isLast=> to complete the journey if the index is last
Usage
import 'package:flutter/material.dart';
import 'package:journey_stepper/journey_stepper.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
useMaterial3: true,
),
home: const MyHomePage(title: 'Journey Stepper'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
centerTitle: true,
),
body: ListView.builder(
itemCount: 5,
shrinkWrap: true,
padding: const EdgeInsets.symmetric(vertical: 20),
itemBuilder: (context, index) {
return JourneyStepper(
leftTitle: const Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text(
"Payment",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
Text(
"We have received your AUD",
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
Text(
"17th May 2023, 3:56 PM",
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
),
)
],
),
rightTitle: const Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Received",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
Text(
"We have received your AUD",
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
Text(
"18th May 2023, 3:56 PM",
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
),
)
],
),
icon: Icons.add,
iconBackgroundColor: Colors.green,
isLast: index == 4,
);
},
),
);
}
}
Usage