This week I'll cover projects I found on GitHub, interesting NuGet library updates, and videos on YouTube. This is by no means all of the activity from the past week related to .NET MAUI, so if you find something interesting please share.
Table of Contents:
Projects
Chat App with Maui.Graphics
jsuarezruiz / netmauigraphics-chat-app-challenge
Chat App UI Challenge made with .NET MAUI Graphics.
ChatApp Challenge using .NET MAUI Graphics
Chat App UI Challenge made with .NET MAUI Graphics. The entire user interface is rendered using .NET MAUI Graphics. The App has a single native view that creates a Canvas where we draw everything.
(Work in progress)
Based on this design by Tannaz Sadeghi.
Benchmarks
Next, we have a comparison between the same App created with .NET MAUI (native controls) and a version created entirely with MAUI Graphics.
NOTE: A Poco F2 Pro has been used to obtain the data.
Startup time
Android App | Framework | Profiled AOT Time (ms) |
---|---|---|
ChatApp | .NET MAUI GA SR1 (Native Views) | 716.9 |
ChatApp | .NET MAUI GA SR1 (Drawn Views) | 432.1 (39.8% lower) |
(lower values are better)
Memory consumption
Android App | Framework | Profiled AOT Time(MBs) |
---|---|---|
ChatApp | .NET MAUI GA SR1 (Native Views) | 240.876 |
ChatApp | .NET MAUI GA SR1 (Drawn Views) | 180.890 (25% lower) |
(lower values are better)
Copyright and
…Orbit Game Engine
bijington / orbit
The Orbit engine is a game engine built on top of .NET MAUI Graphics. The objective is to firstly enjoy the journey of building a game engine and secondly providing a framework that allows us to utilise the best parts of a cross-platform framework while building a 'typical' game.
Orbit Engine
The Orbit engine is a game engine built on top of .NET MAUI Graphics. The objective is to firstly enjoy the journey of building a game engine and secondly providing a framework that allows us to utilise the best parts of a cross-platform framework while building a 'typical' game.
The game loop approach
The engine provides a 'typical' game loop approach where it will process input from the user (TBA), call update across the scene and game objects, perform a render cycle for the scene and game objects and then wait until the next loop of the previous is ready.
flowchart LR
processInput([Process Input]) -->
update([Update Game]) -->
render([Render]) -->
wait([Wait]) --> processInput
Example usage
This section aims at explaining how to use the engine in your project.
Registering with the MauiAppBuilder
The first step is to register the game engine in your MauiProgram.cs
file using the…
Calling App Design
Updated from Xamarin.Forms to .NET MAUI.
RadekVyM / Calling-App
[UI challange] .NET MAUI implementation of "majority wallet & calling" design by Hampus Öhman.
Calling App
.NET MAUI implementation of majority wallet & calling design by Hampus Öhman.
CallingApp.mp4
This project demonstrates how to create .NET MAUI apps with custom graphics effects and many animations.
Original design
Installation
First, make sure you have your Visual Studio and .NET 8 environment set up for .NET MAUI development. If not, follow the setup instructions. Then make sure you have your Android or iOS platform set up for deployment of the application.
Once everything is set up, you can clone the repo and run the application via Visual Studio or Visual Studio Code.
Here are some resources to learn more about .NET MAUI:
Features
Only .NET MAUI APIs and my SimpleToolkit library were used to create this sample.
MauiPlanets
naweed / MauiPlanets
Planets Mobile App UI built using .Net Maui
Maui Planets
Planets Mobile App UI built using .Net Maui. Implements the Dribbble design
You can read about implementation of this design in Part 1 and Part 2 of the blog series.
The Result
MauiPlanets.mp4
JellyFin Client
This is labeled "super experimental" so I'm not sure how well it works, but I think it's notable that it's all C# and shows a lot of setup in MauiProgram.
Insulin Calculator
xeonfusion / InsulinIPCalc
InsulinIPCalc: Insulin infusion protocol calculator and clinical decision support
InsulinIPCalc
InsulinIPCalc: Insulin infusion protocol calculator and clinical decision support
A simple, cross-platform, point of care, clinic decision support system (CDSS) app for Insulin infusion and hyperglycemia management in the ICU. The open-source .NET MAUI app can be compiled on iOS, Android, Mac OS X and Windows using .NET 7 SDK or later.
The infusion protocol calculator is based on the updated "Yale Insulin Infusion Protocol" https://doi.org/10.1177/10600280221074683 and American Association of Clinical Endocrinologists (AACE) blood sugar targets. http://pro.aace.com/.
Publication: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4743315/
To be used by medical professionals under supervision of licensed physicians only, no warranty is applicable.
.NET MAUI Authentication from AzureAD Team
MauiApps is where you'll find the app in this rather large repository.
AzureAD / microsoft-authentication-library-for-dotnet
Microsoft Authentication Library (MSAL) for .NET
Microsoft Authentication Library (MSAL) for .NET
The MSAL library for .NET is part of the Microsoft identity platform for developers (formerly named Azure AD) v2.0. It enables you to acquire security tokens to call protected APIs. It uses industry standard OAuth2 and OpenID Connect. The library also supports Azure AD B2C.
Quick links:
Performance perspectives
Our documentation describes the approach to performance testing.
View some of the historical performance benchmark results in our dashboard.
Support SLA
MSAL.NET became Generally Available with MSAL.NET 3.0.8. Since MSAL.NET moved to version 4:
- Major versions are supported for twelve months after the release of the next major version.
- Minor versions older than N-1 are not supported.
Note Minor versions include bug fixes or features with non-breaking (additive) API changes. It is expected that applications using the library can upgrade through the IDE…
Conference Demo App
AndreKraemer / EntwicklerDE_ConferenceMauiDemo
Demo-Projekt zu meinem .NET-MAUI-Einsteiger-Workshop auf entwickler.de
ConferenceMauiDemo - Demo-App für meinen Workshop auf entwickler.de
Um den Quellcode übersetzen zu können ist Visual Studio 2022 (17.3) notwendig. Aktuell gibt es dazu nur eine Preview-Version
Innerhalb des Installers muss der Workload ".NET Multi-platform App UI Entwicklung" ausgewählt werden.
Bei Fragen: https://twitter.com/codemurai
Open Dictionary
BlueNotify
An app that explores the Azure Notification Hub APIs.
Libraries
GoogleMaps
https://www.nuget.org/packages/Onion.Maui.GoogleMaps/
https://github.com/themronion/Maui.GoogleMaps/
AvantiPoint.Nuke.Maui
From Dan Siegel, core maintainer of the Prism library for Xamarin and .NET MAUI.
The AvantiPoint Nuke Maui library is an extension library for Nuke Build for developers writing DotNet Maui applications. Out of the box it's meant to simplify the process of generating a fully functional CI build for your target platforms. Two extremely attractive features of Nuke Build are that it removes some of the complexity of CI as many of the various tasks are removed from the CI Platform and become agnostic of where they are run. The other attractive feature of Nuke Build is that it moves your build process out of hard to understand YAML to C# you're already extremely familiar with.
https://www.nuget.org/packages/AvantiPoint.Nuke.Maui
DarkHelpers
Despite the frightening(?) name, this looks like a good set of MVVM ... helpers including:
- DarkObservableObject
- DarkViewModel
- DarkObservableCollection w/ registry sync
- IDarkNavigationService
- DarkAsyncCommand, DarkCommand, and DarkEventManager
- ...and more
https://www.nuget.org/packages/Divis.DarkHelpers.Maui
https://github.com/michaldivis/DarkHelpers
Videos
.NET MAUI Day Live Event
Hosted by the Microsoft Reactor in Shanghai for the Greater China Region (GCR), this live event features speakers in English with Chinese captions and Chinese native speakers.
.NET Community Standups
Error Monitoring .NET MAUI with Sentry
XAML Data Binding and MVVM Basics
What's Next for Blazor and .NET
Steve Sanderson, an engineer on the ASP.NET, gave this presentation at NDC { Porto }.
[ES] 5 Ways to create controls in .NET MAUI
- Using Custom Renderers (Xamarin.Forms Architecture).
- Using Custom Handlers.
- Using ContentView.
- Using TemplatedView (Templated Controls).
- Using GraphicsView (Drawn controls).
Top comments (1)
Nice list, David.