maui中的加载动画
loading animation in maui
<!-- Loading Indicator -->
<ActivityIndicator IsVisible="{Binding IsBusy}"
IsRunning="{Binding IsBusy}"
Color="{StaticResource Primary}" />
<StackLayout
IsVisible="{Binding IsBusy}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
Spacing="15">
<ActivityIndicator
IsRunning="True"
Color="{StaticResource Primary}"
WidthRequest="50"
HeightRequest="50"
Scale="1.2"/>
<Label
Text="正在加载,请稍候..."
FontSize="16"
TextColor="Gray"
HorizontalOptions="Center"/>
</StackLayout>
<StackLayout
IsVisible="{Binding IsLoading}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
Spacing="15">
<ActivityIndicator
IsRunning="True"
Color="{StaticResource Primary}"
WidthRequest="50"
HeightRequest="50"
Scale="1.2"/>
<Label
Text="正在加载,请稍候..."
FontSize="16"
TextColor="Gray"
HorizontalOptions="Center"/>
</StackLayout>
maui中定义全局变量
maui中获取封装全局变量
能不能直接定义 public static MauiApp CreateMauiApp()
MauiProgram 里的 CreateMauiApp() 本来就是 静态方法,你完全可以在里面直接定义和读取配置,不需要额外类。
private string HubUrl = " "; // 根据实际情况调整 读取launchSettings.json
HttpClient 的 BaseAddress 全局可用(依赖注入直接拿 HttpClient)。 HubUrl 用 builder.Configuration["HubUrl"] 存储,任何地方都能读。 怎么读
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");
});
// 配置 HttpClient,全局注册
builder.Services.AddSingleton(new HttpClient
{
BaseAddress = new Uri("http://221.236.27.82:10020/api/")
});
// HubUrl 也可以放配置里
builder.Configuration["HubUrl"] = "http://221.236.27.82:10020/hubs/reminder";
return builder.Build();
}
}
HttpClient 的 BaseAddress 全局可用(依赖注入直接拿 HttpClient)。
HubUrl 用 builder.Configuration["HubUrl"] 存储,任何地方都能读。
1. 读取 HttpClient 的 BaseAddress
因为 HttpClient 注册到了 DI(依赖注入)容器里,所以在 任何需要的类(ViewModel / Service / Page)里,构造函数直接注入就行:
public class ReminderService
{
private readonly HttpClient _httpClient;
public ReminderService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> GetDataAsync()
{
var result = await _httpClient.GetStringAsync("reminders");
return result;
}
}
然后在 MauiProgram.cs 注册:builder.Services.AddSingleton
var service = ServiceHelper.GetService
🔹 2. 读取 HubUrl(来自 builder.Configuration)
builder.Configuration 会被存放到 MauiApp 的 ServiceProvider 里,所以你也可以注入 IConfiguration 来读:
public class HubConnectionService
{
private readonly string _hubUrl;
public HubConnectionService(IConfiguration config)
{
_hubUrl = config["HubUrl"];
}
public string GetHubUrl() => _hubUrl;
}
注册:
builder.Services.AddSingleton<HubConnectionService>();
使用:
var hubService = ServiceHelper.GetService<HubConnectionService>();
var hubUrl = hubService.GetHubUrl();
🔹 3. 如果你想在 页面或 ViewModel 里直接读
可以这样写:
using Microsoft.Maui.Controls;
var config = IPlatformApplication.Current.Services.GetService<IConfiguration>();
var hubUrl = config["HubUrl"];