In UWP, device specific views can be created by placing those views into their respective folders or appending the relevant device name to the file name. I don't see any information on doing the equivalent with MAUI as regards platform specific views only platform specific code. Is this a thing ?
The closest I can get is using preprocessor directives and giving the files unique names. This means there are still multiple code behind files unfortunately.
So -
#if ANDROID
      await Navigation.PushAsync(new Page1Windows());
 
#elif WINDOWS
      await Navigation.PushAsync(new Page1Android());
    
#endif
It's a thing. The default MAUI projects provide a platform specific folder you can put platform specific code in.
If you want something more complicated, like your platform-named folders or files, you can edit your csproj to include or exclude files by name & platform.
There are examples of both file and folder-based targeting in the Configure multi-targeting docs:
Here's the combined view from Combine filename and folder multi-targeting that excludes files and folders that include platform names that don't match the current target.
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-android')) != true">
   <Compile Remove="**\**\*.Android.cs" />   <None Include="**\**\*.Android.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
   <Compile Remove="**\Android\**\*.cs" />   <None Include="**\Android\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net6.0-ios')) != true AND $(TargetFramework.StartsWith('net6.0-maccatalyst')) != true"> 
   <Compile Remove="**\**\*.iOS.cs" />   <None Include="**\**\*.iOS.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />  
   <Compile Remove="**\iOS\**\*.cs" />   <None Include="**\iOS\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />  
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-windows')) != true ">
    <Compile Remove="**\*.Windows.cs" />   <None Include="**\*.Windows.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
    <Compile Remove="**\Windows\**\*.cs" />   <None Include="**\Windows\**\*.cs" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" /> 
</ItemGroup>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With