Plugin.Maui.MilestoneTracker
1.0.3
See the version list below for details.
dotnet add package Plugin.Maui.MilestoneTracker --version 1.0.3
NuGet\Install-Package Plugin.Maui.MilestoneTracker -Version 1.0.3
<PackageReference Include="Plugin.Maui.MilestoneTracker" Version="1.0.3" />
<PackageVersion Include="Plugin.Maui.MilestoneTracker" Version="1.0.3" />
<PackageReference Include="Plugin.Maui.MilestoneTracker" />
paket add Plugin.Maui.MilestoneTracker --version 1.0.3
#r "nuget: Plugin.Maui.MilestoneTracker, 1.0.3"
#:package Plugin.Maui.MilestoneTracker@1.0.3
#addin nuget:?package=Plugin.Maui.MilestoneTracker&version=1.0.3
#tool nuget:?package=Plugin.Maui.MilestoneTracker&version=1.0.3
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()
{
milestoneView.Milestones = Milestones;
milestoneView.StartAnimation = true;
}
private void Button_Clicked(object sender, EventArgs e)
{
milestoneView[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)
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.