Skip to content

Commit 35d0f49

Browse files
try this
1 parent fddf00d commit 35d0f49

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

samples/FluidHostPage.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace Sample;
55

66
public class FluidHostPage : ContentPage, IFluidHost
77
{
8+
private int _zIndex = 0;
89
private View? _currentView;
910
private readonly AbsoluteLayout _root = [];
1011

@@ -17,15 +18,11 @@ public FluidHostPage()
1718

1819
}
1920

20-
private int _zIndex = 0;
21-
2221
public void ShowView(View view)
2322
{
24-
//_ = _root.Children.Remove(_currentView);
25-
2623
view.ZIndex = _zIndex++;
2724
view.WidthRequest = Width;
28-
view.HeightRequest = Width;
25+
view.HeightRequest = Height;
2926

3027
_currentView = view;
3128

src/FlowNavigation.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,20 @@ private async Task<View> Go(bool isHotReload = false)
148148
var view = (View?)_services.GetService(targetType) ??
149149
throw new Exception($"View {targetType.Name} not found");
150150

151+
_ = view.FadeTo(1);
152+
153+
string? previousRouteName = null;
154+
Type? previousRouteType = null;
155+
View? previousView = null;
156+
157+
if (_activeIndex > 0)
158+
{
159+
previousRouteName = _navigationStack[_activeIndex - 1].Split('?')[0];
160+
previousRouteType = ActiveRoutes[previousRouteName];
161+
previousView = (View?)_services.GetService(previousRouteType) ??
162+
throw new Exception($"View {previousRouteType.Name} not found");
163+
}
164+
151165
if (_activeView is not null)
152166
{
153167
_activeView.OnLeaving();
@@ -166,6 +180,7 @@ private async Task<View> Go(bool isHotReload = false)
166180
}
167181
}
168182

183+
_ = (previousView?.FadeTo(0));
169184
Current?.View.ShowView(view);
170185

171186
if (view is FluidView fluidView)
@@ -201,11 +216,8 @@ private async Task<View> Go(bool isHotReload = false)
201216
.ToDouble(VisualElement.WidthRequestProperty, flowView.Width)
202217
.ToDouble(VisualElement.HeightRequestProperty, flowView.Height));
203218

204-
if (_activeIndex > 0)
219+
if (previousRouteType is not null)
205220
{
206-
var previousRouteName = _navigationStack[_activeIndex - 1].Split('?');
207-
var previousRouteType = ActiveRoutes[previousRouteName[0]];
208-
209221
_ = fluidView.TransitionView.FlowToResult(previousRouteType);
210222
_ = await fluidView.TransitionView.Flow(targetType);
211223
}
@@ -214,6 +226,11 @@ private async Task<View> Go(bool isHotReload = false)
214226
_activeView = fluidView;
215227
}
216228

229+
if (previousView is not null)
230+
{
231+
Current?.View.RemoveView(previousView);
232+
}
233+
217234
return view;
218235
}
219236
}

src/IFluidHost.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface IFluidHost
1616
double Height { get; }
1717

1818
/// <summary>
19-
/// Shows the specified view, null to clear it.
19+
/// Shows the specified view.
2020
/// </summary>
2121
void ShowView(View view);
2222
}

0 commit comments

Comments
 (0)