Plugin.Maui.MilestoneTracker
1.0.2
See the version list below for details.
dotnet add package Plugin.Maui.MilestoneTracker --version 1.0.2
NuGet\Install-Package Plugin.Maui.MilestoneTracker -Version 1.0.2
<PackageReference Include="Plugin.Maui.MilestoneTracker" Version="1.0.2" />
<PackageVersion Include="Plugin.Maui.MilestoneTracker" Version="1.0.2" />
<PackageReference Include="Plugin.Maui.MilestoneTracker" />
paket add Plugin.Maui.MilestoneTracker --version 1.0.2
#r "nuget: Plugin.Maui.MilestoneTracker, 1.0.2"
#:package Plugin.Maui.MilestoneTracker@1.0.2
#addin nuget:?package=Plugin.Maui.MilestoneTracker&version=1.0.2
#tool nuget:?package=Plugin.Maui.MilestoneTracker&version=1.0.2
Plugin.Maui.MilestoneTracker
A lightweight and customizable milestone tracking UI component for .NET MAUI apps. Ideal for visualizing user progress, achievements, onboarding steps, or any sequence of tasks in a beautiful and animated path-based layout.
π Milestone Tracker Guide
For a complete step-by-step installation and usage guide, visit:
Milestone Tracker Guide
Preview
β¨ Features
π Dynamic progress animation along a smooth paths
π Custom milestone icons (completed + default)
βοΈ MVVM-friendly with full data-binding support
π§© Easy to integrate
π Optimized for performance β renders only whatβs needed
π± Works on Android, iOS, Windows and macOS via .NET MAUI
π¦ Installation
Install via NuGet:
<pre> dotnet add package Plugin.Maui.MilestoneTracker </pre>
Or via Visual Studio NuGet UI:
<pre> Plugin.Maui.MilestoneTracker </pre>
π Getting Started
- Add Namespace
<pre> xmlns:milestone="clr-namespace:Plugin.Maui.MilestoneTracker.Journey;assembly=Plugin.Maui.MilestoneTracker" </pre>
- Use in XAML
<Border
Padding="10"
StrokeShape="RoundRectangle 7,7,7,7"
VerticalOptions="Center">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="yourcolor" Offset="0.0" />
<GradientStop Color="yourcolor" Offset="1.0" />
</LinearGradientBrush>
</Border.Background>
<milestone:MilestoneTracker
AnimationSpeed="Normal"
PathType="Wave"
StartAnimation="{Binding StartAnimation}"
Milestones="{Binding Milestones}"
Grid.Row="1"
Grid.ColumnSpan="2"
x:Name="milestoneView"
PathColor="{StaticResource Primary}"
HeightRequest="150" />
</Border>
PathType =
Horizontal, // Straight horizontal line
Wave, // Sinusoidal wave from left to right
Diagonal, // Diagonal from bottom left to top right
DiagonalWave, // Diagonal Wave from bottom left to top right
ZigZag // Zig-zag pattern
- Page.cs
protected override async void OnAppearing()
{
MilestoneTracker.Milestones = Milestones;
MilestoneTracker.StartAnimation = true;
}
private void Button_Clicked(object sender, EventArgs e)
{
Milestones[3].IsCompleted = true;
}
π§© Example ViewModel
public ObservableCollection<Milestone> Milestones { get; set; } = new()
{
new Milestone { ImageSource = "milestone1.png", CompletedImageSource = "milestone1_done.png", IsCompleted = true },
new Milestone { ImageSource = "milestone2.png", CompletedImageSource = "milestone2_done.png", IsCompleted = false },
new Milestone { ImageSource = "milestone3.png", CompletedImageSource = "milestone3_done.png", IsCompleted = false }
};
π§Ό Best Practices
Use ObservableCollection<T> for dynamic updates.
Bind directly to your ViewModel using BindingContext.
π§ͺ Planned Features
Vertical layout mode
Horizontal scrollable milestones
Milestone click events (e.g., show detail on tap)
Custom path shapes (curves, waves, etc.)
Dark mode support
π License
MIT License Β© 2025 Ali Raza
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-android34.0 is compatible. net8.0-browser was computed. net8.0-ios was computed. net8.0-ios18.0 is compatible. net8.0-maccatalyst was computed. net8.0-maccatalyst18.0 is compatible. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net8.0-windows10.0.19041 is compatible. net9.0 is compatible. net9.0-android was computed. net9.0-android35.0 is compatible. net9.0-browser was computed. net9.0-ios was computed. net9.0-ios18.0 is compatible. net9.0-maccatalyst was computed. net9.0-maccatalyst18.0 is compatible. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net9.0-windows10.0.19041 is compatible. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Maui.Controls (>= 8.0.100)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net8.0-android34.0
- Microsoft.Maui.Controls (>= 8.0.100)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net8.0-ios18.0
- Microsoft.Maui.Controls (>= 8.0.100)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net8.0-maccatalyst18.0
- Microsoft.Maui.Controls (>= 8.0.100)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net8.0-windows10.0.19041
- Microsoft.Maui.Controls (>= 8.0.100)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net9.0
- Microsoft.Maui.Controls (>= 9.0.51)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net9.0-android35.0
- Microsoft.Maui.Controls (>= 9.0.51)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net9.0-ios18.0
- Microsoft.Maui.Controls (>= 9.0.51)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net9.0-maccatalyst18.0
- Microsoft.Maui.Controls (>= 9.0.51)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
-
net9.0-windows10.0.19041
- Microsoft.Maui.Controls (>= 9.0.51)
- SkiaSharp.Views.Maui.Controls (>= 3.119.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.