MAUI播客应用程序(.NET Conf2021)
2021/12/3 11:06:11
本文主要是介绍MAUI播客应用程序(.NET Conf2021),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
介绍
在.NET Conf 2021大会上,微软展示了基于.NET6 跨平台应用程序, 具有 ASP.NET Core、Blazor、.NET MAUI、微服务等功能。
浏览由 ASP.NET Core 和 Blazor 提供支持的 .NET Podcasts 应用的实时运行版本:https://dotnetpodcasts.azurewebsites.net/
项目体系
- 移动端和桌面:适用于 iOS、Android、macOS 和 Windows 的原生 .NET MAUI 应用程序
- Web:Blazor WebAssembly应用程序和 ASP.NET Core Blazor 网站
- API:ASP.NET Core Web API 、injestion worker 和 podcast update worker
- Blazor 混合应用程序:.NET MAUI 与 Blazor 的混合应用程序示例。
MAUI项目
单个代码库的跨平台项目解决方案, 适用于Android、iOS、macOS以及Windows 的原生.NET应用程序, 解决方案如下:
特征介绍
- Global Usings
全局引用, 只需要在任何using 语句之前添加Global关键字, 即可使该引用成为全局
global using Microsoft.Maui;
- 内置主题
通过UserAppTheme修改基于不同平台的主题设置, Light/Dark
switch (Settings.Theme) { default: case OSAppTheme.Light: App.Current.UserAppTheme = OSAppTheme.Light; break; case OSAppTheme.Dark: App.Current.UserAppTheme = OSAppTheme.Dark; break; }
- 消息中心
使用过类似mvvmlight中的Messenger类似, 可以通过Subscribe/Send/Unsubscribe 来完成订阅、发布、取消订阅等功能。
//订阅 MessagingCenter.Instance.Subscribe<string>("","",async (sender) => { //... }); //取消订阅 MessagingCenter.Instance.Unsubscribe<string>("", ""); //发布 MessagingCenter.Instance.Send<string>("", "");
- 内置容器
MAUI中提供的统一注册以及容器服务, 通过 MauiAppBuilder 添加自定服务以及通过 MauiWinUIApplication获取对应服务。
//注册服务 public static MauiAppBuilder ConfigureServices(this MauiAppBuilder builder) { builder.Services.TryAddSingleton<PlayerService>(); } //调用平台的容器服务 public static class ServicesProvider { public static TService GetService<TService>() => Current.GetService<TService>(); public static IServiceProvider Current => #if WINDOWS10_0_17763_0_OR_GREATER MauiWinUIApplication.Current.Services; #elif ANDROID MauiApplication.Current.Services; #elif IOS || MACCATALYST MauiUIApplicationDelegate.Current.Services; #else null; #endif }
统一资源管理
MAUI中统一了资源的管理以及访问,例如: 字体、图标、样式、本地资源文件等。
访问字体
<Setter Property="FontFamily" Value="SegoeUiSemibold" />
访问图片资源
<Image Source="xxx.png" />
本地化资源
xmlns:res="clr-namespace:Microsoft.NetConf2021.Maui.Resources.Strings" <Label Text="{x:Static res:AppResource.Categories}" />
平台化
在XAML以及代码中, 你可以通过平台化处理不同的UI以及业务逻辑, 可以通过OnPlatform以及OnIdiom来区分平台及类型。
不同平台下的字体设置
<Label FontSize="{OnPlatform UWP=24, macOS=24, Android=14,iOS=14}" />
不同设备的设置
<GridItemsLayout Span="{OnIdiom Phone=2, Tablet=3, Desktop=3}" />
Essentials
内置的Essentials提供访问本机网络WIFI、蓝牙等等。
//验证是否联网 var current = Connectivity.NetworkAccess; if (current != NetworkAccess.Internet) { //... } //验证是否存在WIFI连接 var profiles = Connectivity.ConnectionProfiles; var hasWifi = profiles.Contains(ConnectionProfile.WiFi); if (hasWifi) { //... }
混合模式
在XAML当中, 使用BlazorWebView
xmlns:b="clr-namespace:Microsoft.AspNetCore.Components.WebView.Maui;assembly=Microsoft.AspNetCore.Components.WebView.Maui" <b:BlazorWebView x:Name="MyWebView" Margin="10,0" HostPage="wwwroot/index.html" BackgroundColor="{AppThemeBinding Light={StaticResource Grey1}, Dark={StaticResource Grey9}}"> <b:BlazorWebView.RootComponents> <b:RootComponent Selector="app" ComponentType="{x:Type pages:ListenTogetherComponent}" /> </b:BlazorWebView.RootComponents> </b:BlazorWebView>
总结
项目已在Github发布, https://github.com/microsoft/dotnet-podcasts, 更多特性探索源代码。
这篇关于MAUI播客应用程序(.NET Conf2021)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统