日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MAUI 跨平台播客应用程序(Conf 2021)

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MAUI 跨平台播客应用程序(Conf 2021) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

在.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_GREATERMauiWinUIApplication.Current.Services; #elif ANDROIDMauiApplication.Current.Services; #elif IOS || MACCATALYSTMauiUIApplicationDelegate.Current.Services; #elsenull; #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 跨平台播客应用程序(Conf 2021)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。