-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[WiP] .NET MAUI Shell Improvements #10804
Comments
@PureWeen I want to add some items, that I think should be good to take care of. Deeper Flyout Customization
Navigation
Shell.TitleView
If I think in something else I'll update this comment. |
Hopefully I'll have the work done I've been doing on my streams which will enable all of this!!
The hooks that will come about as part of this PR Will make all the lifecycle parts async Maybe we'll add some sort of Async Token to the existing navigating/navigated events?
Yes! Once I get the Flyout more customizable I'll probably switch to getting this implemented I think it won't be too hard... 🤞 And then I'd like to extend @jsuarezruiz 's appbar so you can just set it into the titleview and it'll just take over |
I don't think so. It is just that I didn't see an API spec, so I thought that spec doesn't exist at all.
Can you provide an example? I don't know how it looks like
If it's hard we can talk and figure out a way to make it work❣️ Do you have an ETA for the @jsuarezruiz's appbar? And for merge it into Shell? |
What if you don't want any tabs or flyouts and just want to roll with your own mainpage - but still want to be able to use route navigation, parameters, constructor injection, etc? Is that covered by the envisioned improvements? I can't tell. |
Not exactly this but something like this Or the arg could just have a property that's by default null but if you want to defer the navigating you can set it to a task. The calling code will then await that task and once it's completed continue there's a few ways to approach it
Soonish :-) @jsuarezruiz is a bit busy this week working on drawing/brushes/triage but we'll hopefully have some working versions of these things everyone can play with.
I added a basic sample <App>
<App.Routes>
<Route = "Foo">
<ShellContent>
</Route>
<Route="Login">
<MyLoginPage/>
</Route>
</App.Routes>
</App> So for that you would just not define any tabs or flyouts |
@PureWeen Thanks! |
+1 |
I would like to add: [Enhancement] Dependency Injection support for creating ContentPage in Shell. #8359 |
@PureWeen Should/can we move this to .NET MAUI? |
Does this ticket include looking at adding DI support to shell. I'm getting quite frustrated at the lack of guidance on how to do DI with shell and I'm not sure it is possible. |
@nogginbox yes, you can follow the progress on this PR |
I think a lot of this has already moved to the .NET MAUI repo. In any case, this won't make it's way into Xamarin.Forms anymore. I will see to it that we reevaluate all the things in here for .NET MAUI, but closing this here for now :) |
Mission statements
More explicit declaration of different areas of an app
The current Shell model is more Storyboard focused. So the user specifies everything that could make up an app into Shell.
The following Xaml will render a single tabbar without a Flyout Menu
Will there be two TabBars? Will there be a FlyoutItem and a TabBar?
The next version of Shell will shift to having a tighter connection between what's in the Shell and what you see
App with no tabs or flyout
Example
Enable Deep Tab Nesting Scenarios
Example
Nested Tabs / Tabs
Nested tabs will all be realized via the TabView control (#10773) and we will also allow users to swap out native implementations with the TabView Control
Deeper Flyout Customization
NavigationItem
NavigationList
By default the NavigationList will use an ItemSource generated from the currently active App.Route based on the normal Shell Parameters. But users can specify a totally customized list if they would like to.
Customized Flyout
Enable ShellElement navigation scenarios
Currently with shell you can only push ContentPages but the user should be able to push everything and anything.
This will also allow you to better articulate at what level you want a navigation to occur.
Right now whenever you push a ContentPage the NavigationStack is always relative to a bottom tab. Once we enable shell types to be pushable those can push at different levels
More Lifecycle hooks and structure to better enable customization and MVVM frameworks
#5166
Ongoing work here
#6764
This will enable people to tap into literally every part of shell. We can even use this to let people more expressively navigate
For example a Path is now defined by the following concrete class
so we could add an overload for GoToAsync that takes a PathPart which would let people articulate more complex parameters
Considerations
Things Shell does really well that we should maintain
Missing features of shell
The text was updated successfully, but these errors were encountered: