DEV Community

David Ortinau
David Ortinau

Posted on • Updated on

Roundup of .NET MAUI - Week of July 4, 2022

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

GitHub logo 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.

ChatApp

(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)

ChatApp Startup time

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)

ChatApp Memory time

Copyright and

Orbit Game Engine

GitHub logo 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 UseOrbitEngine

Calling App Design

Updated from Xamarin.Forms to .NET MAUI.

GitHub logo 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.

Original design

Dribbble Design

My .NET MAUI implementation

The application was built using only .NET MAUI APIs.

Supported platforms

These are all the platforms I tested the app on:

  • Android
  • iOS
  • Windows

       

Features

  • GraphicsView
  • Animations
  • Use of the new .NET MAUI APIs and controls

snppts

MauiPlanets

GitHub logo naweed / MauiPlanets

Planets Mobile App UI built using .Net Maui

Maui Planets

Planets Mobile App UI built using .Net Maui. Implements the Dribbble design

drib-planets

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.

Super Experimental Maui Jellyfin Client

Build Windows Build MacCatalyst

GitHub GitHub release (release name instead of tag name)




Insulin Calculator

Image description

GitHub logo 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 6 SDK or later.

The infusion protocol calculator is based on the updated "Yale Insulin Infusion Protocol" https://bit.ly/3IsCsia 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.

InsulinIPCalcMac

InsulinIPCalcWinUI

Screenshot_1657865269

Screenshot_1657865295

Screenshot_1657865348




.NET MAUI Authentication from AzureAD Team

MauiApps is where you'll find the app in this rather large repository.

GitHub logo AzureAD / microsoft-authentication-library-for-dotnet

Microsoft Authentication Library (MSAL) for .NET

Microsoft Authentication Library (MSAL) for .NET, UWP, NetCore, MAUI, Xamarin Android and iOS

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:

NuGet package

Microsoft.Identity.Client
NuGet

Microsoft.Identity.Client.Desktop
NuGet

Microsoft.Identity.Client.Broker
NuGet

Build Status

Build Status

Release notes, roadmap and SLA

Release notes and roadmap

MSAL.NET roadmap is available from Roadmap in the Wiki pages, along with release notes.

Support SLA

MSAL.NET became Generally Available with MSAL.NET 3.0.8. Since MSAL.NET moved to 4.x

  • Major versions are supported for twelve months after the release of the next major version.
  • Minor versions older than N-1 are not supported

    Minor versions are bugfixes or features with non-breaking (additive) API changes…

Conference Demo App

GitHub logo 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

Image description

GitHub logo sipasi / OpenDictionary

Open dictionary

Open Dictionary

A simple implementation of dictionary that allows you writing and grouping words and repeating it in games

Screenshots

ToDo List

  • Migrate to Maui



BlueNotify

An app that explores the Azure Notification Hub APIs.

GitHub logo silvio-pardo / BlueNotify

Explorer for Azure notification hub

BlueNotify

Simple .Net Maui App for Explore the Azure notification hub using sdk.

image

Functionality

  1. Device List
  2. Get Single Device
  3. Delete Device
  4. Send IOS Notification

For send the request use the object declared in models folder.

Before use the methods set up the connection in the settings tab.




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

  1. Using Custom Renderers (Xamarin.Forms Architecture).
  2. Using Custom Handlers.
  3. Using ContentView.
  4. Using TemplatedView (Templated Controls).
  5. Using GraphicsView (Drawn controls).

Top comments (1)

Collapse
 
saint4eva profile image
saint4eva

Nice list, David.