Pub Version License

Nice Step Indicator

A package for nice step indicators in your app.

Png demo Gif demo

Features

  • Customizable active and inactive colors
  • Builder for child widgets
  • Supports different step statuses (active, completed, inactive)

Installation

Add nice_step_indicator to your pubspec.yaml:

dependencies:
  nice_step_indicator: ^0.1.0

Then run flutter pub get to install the package.

Usage

Import the package

import 'package:nice_step_indicator/nice_step_indicator.dart';

Example

Here is an example of how to use the NiceStepIndicator widget:

import "package:flutter/material";
import "package:nice_step_indicator/nice_step_indicator.dart";

/// A model representing a step in the progress indicator.
class ProgressStep {
  /// Creates a [ProgressStep] with the given [title], [subtitle], and [status].
  const ProgressStep({
    required this.title,
    required this.subtitle,
    this.status = StepLineStatus.inactive,
  });

  /// The title of the step.
  final String title;

  /// The subtitle of the step.
  final String subtitle;

  /// The status of the step, which can be active, completed, or inactive.
  final StepLineStatus status;
}

/// The main application widget.

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    // Generate a list of steps for the progress indicator.
    final steps = List.generate(
      5,
          (index) =>
          ProgressStep(
            subtitle: 'Step ${index + 1} subtitle',
            title: 'Step ${index + 1}',
          ),
    );

    return MaterialApp(
      theme: ThemeData(
        appBarTheme: AppBarTheme(
          backgroundColor: Theme
              .of(context)
              .colorScheme
              .inversePrimary,
        ),
        useMaterial3: true,
      ),
      localizationsDelegates: AppLocalizations.localizationsDelegates,
      supportedLocales: AppLocalizations.supportedLocales,
      home: Center(
        child: NiceStepIndicator<ProgressStep>(
          items: steps,
          builder: (context, _, item) =>
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Text(item.title),
                  const SizedBox(height: 8),
                  Text(item.subtitle),
                ],
              ),
          status: (item) => StepLineStatus.fromString(item.status.name),
        ),
      ),
    );
  }
}

Customization

You can customize the NiceStepIndicator widget by providing different values for the following properties:

  • activeColor: The color of the active step.
  • inactiveColor: The color of the inactive step.
  • dotOffset: Optional offset for the dot indicator item.
  • offset: Optional offset for the step indicator item, providing padding around the step.
  • strokeWidth: The width of the stroke.

API Reference

NiceStepIndicator

A widget that displays a series of step indicators.

Properties
  • activeColor: The color of the active step.
  • builder: The child widget builder.
  • dotOffset: Optional offset for the dot indicator item.
  • inactiveColor: The color of the inactive step.
  • items: The data to render in the steps.
  • offset: Optional offset for the step indicator item, providing padding around the step.
  • status: The indicator status builder.
  • strokeWidth: The width of the stroke.

StepWidgetBuilder

A function that builds a widget for a step indicator item.

Parameters
  • BuildContext context: The build context.
  • int index: The index of the item.
  • T item: The item itself.

StepStatusBuilder

A function that determines the status of a step indicator item.

Parameters
  • T item: The item itself.
Returns
  • StepLineStatus: The status of the step indicator item.

License

This project is licensed under the MIT License.

Bugs or Requests

If you encounter any problems feel free to open an issue. If you feel this package is missing a feature, please raise a ticket on GitHub and I'll look into it. Pull request are also welcome.

Libraries

nice_step_indicator
A package for nice step indicators in your app