新增 FlowScope Git 包雏形

This commit is contained in:
JSD\13999
2026-06-04 14:54:49 +08:00
parent 37e6d4ca57
commit f5887da9fb
127 changed files with 5330 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace FlowScope.UI
{
public sealed class UIScreenNavigator : IUIScreenNavigator
{
private readonly UIManager _uiManager;
private readonly Stack<Action> _closeStack = new();
public UIScreenNavigator(UIManager uiManager)
{
_uiManager = uiManager ?? throw new ArgumentNullException(nameof(uiManager));
}
public bool CanGoBack => _closeStack.Count > 1;
public async Task<TPanel> PushAsync<TPanel, TViewModel>(
TViewModel viewModel,
CancellationToken cancellationToken)
where TPanel : UIPanelBase<TViewModel>
{
var panel = await _uiManager.OpenAsync<TPanel, TViewModel>(viewModel, cancellationToken);
_closeStack.Push(() => _uiManager.Close<TPanel>());
return panel;
}
public void GoBack()
{
if (!CanGoBack)
{
return;
}
var close = _closeStack.Pop();
close();
}
public void Clear()
{
while (_closeStack.Count > 0)
{
var close = _closeStack.Pop();
close();
}
}
}
}