ServerDrivenUI.Maui
8.0.57-pre
See the version list below for details.
dotnet add package ServerDrivenUI.Maui --version 8.0.57-pre
NuGet\Install-Package ServerDrivenUI.Maui -Version 8.0.57-pre
<PackageReference Include="ServerDrivenUI.Maui" Version="8.0.57-pre" />
paket add ServerDrivenUI.Maui --version 8.0.57-pre
#r "nuget: ServerDrivenUI.Maui, 8.0.57-pre"
// Install ServerDrivenUI.Maui as a Cake Addin #addin nuget:?package=ServerDrivenUI.Maui&version=8.0.57-pre&prerelease // Install ServerDrivenUI.Maui as a Cake Tool #tool nuget:?package=ServerDrivenUI.Maui&version=8.0.57-pre&prerelease
Maui.ServerDrivenUI
Server Driven UI library for dotnet MAUI. New features to be deployed on all platforms simultaneously via a backend change, without releasing new versions of the native apps.
Sample Api Response: https://serverdrivenui.azurewebsites.net/ServerDrivenUI?key=MyView
Getting started
- Install the ServerDrivenUI.Maui package
Install-Package ServerDrivenUI.Maui -Version 8.0.31-pre
- Add UseServerDrivenUI declaration to your
MauiAppBuilder
and configure it to connect to your API
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.ConfigureServerDrivenUI(s =>
{
s.RegisterElementGetter((key, provider) => provider.GetService<IYourApiService>().YourApiMethod(key)); //Register which api will be used to get the UI
s.AddServerElement("MyView"); // Register the visual elements that will follow server driven ui
});
return builder.Build();
}
}
- You can now use the ServerDrivenUI Elements, defining the key that will be used to get the UI from the API
- You can also define a LoadingTemplate and an ErrorTemplate to be shown while the UI is being fetched from the API
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="Maui.ServerDrivenUI.Sample.MainPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<ServerDrivenView x:Name="sduiView" ServerKey="MyView">
<ServerDrivenView.ErrorTemplate>
<DataTemplate>
<StackLayout>
<Label Text="Unexpected error" />
</StackLayout>
</DataTemplate>
</ServerDrivenView.ErrorTemplate>
<ServerDrivenView.LoadingTemplate>
<DataTemplate>
<StackLayout>
<Label Text="Loading..." />
</StackLayout>
</DataTemplate>
</ServerDrivenView.LoadingTemplate>
</ServerDrivenView>
</ContentPage>
IOS
We need to set the interpreter to allow the Xaml loader to work
<PropertyGroup Condition="$(TargetFramework.Contains('-ios'))">
<UseInterpreter>true</UseInterpreter>
<MtouchInterpreter>-all</MtouchInterpreter>
</PropertyGroup>
Know issues
MAUI 16809 - Label().LoadFromXaml does not work when using Label.FormattedText
We are currently doing a workaround to make FormattedText work with ServerDrivenUI
Repo Activity
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0-android34.0 is compatible. net8.0-ios17.0 is compatible. net8.0-maccatalyst18.0 is compatible. net8.0-windows10.0.19041 is compatible. |
-
net8.0-android34.0
- EasyCaching.LiteDB (>= 1.9.2)
- Microsoft.Maui.Controls (>= 8.0.3)
- Microsoft.Maui.Controls.Compatibility (>= 8.0.3)
-
net8.0-ios17.0
- EasyCaching.LiteDB (>= 1.9.2)
- Microsoft.Maui.Controls (>= 8.0.3)
- Microsoft.Maui.Controls.Compatibility (>= 8.0.3)
-
net8.0-maccatalyst18.0
- EasyCaching.LiteDB (>= 1.9.2)
- Microsoft.Maui.Controls (>= 8.0.3)
- Microsoft.Maui.Controls.Compatibility (>= 8.0.3)
-
net8.0-windows10.0.19041
- EasyCaching.LiteDB (>= 1.9.2)
- Microsoft.Maui.Controls (>= 8.0.3)
- Microsoft.Maui.Controls.Compatibility (>= 8.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.0.60-pre | 31 | 11/12/2024 |
8.0.59-pre | 35 | 11/4/2024 |
8.0.57-pre | 31 | 11/4/2024 |
8.0.56-pre | 37 | 11/4/2024 |
8.0.55-pre | 30 | 11/4/2024 |
8.0.54-pre | 37 | 11/2/2024 |
8.0.53-pre | 33 | 11/2/2024 |
8.0.52-pre | 27 | 11/2/2024 |
8.0.51-pre | 35 | 11/2/2024 |
8.0.50-pre | 38 | 11/1/2024 |
8.0.49-pre | 32 | 11/1/2024 |
8.0.48-pre | 46 | 10/17/2024 |
8.0.47-pre | 47 | 10/17/2024 |
8.0.46-pre | 37 | 10/17/2024 |
8.0.45-pre | 56 | 10/17/2024 |
8.0.41-pre | 75 | 3/5/2024 |
8.0.40-pre | 57 | 3/3/2024 |
8.0.37-pre | 126 | 2/24/2024 |
8.0.31-pre | 83 | 2/18/2024 |