.NET MAUI Preview 14 Yenilikleri

Merhabalar,

Preview 14, Visual Studio 2022 17.2 Preview 2 ile beraber kullanıma sunuldu. Gelen en güzel güncellemelerden biri olduğunu söyleyebilirim. Çünkü tüm özellikler MAUI ile uygulama geliştirirken hayatamızı gerçekten kolaylaştıran özellikler. Bu sürümde, bir önceki sürümlerde olan buglar giderildi, kontrollerdeki beklenen özellikler eklendi ve windows developerlar için yeni özellikler getirildi.

Connectivity

Xamarin.Forms Essentials tarafından da hatırladığımız ve hatta bazı farklı nuget paketlerinde de gördüğümüz, online/offline senaryolarını gerçekleştirdiğimiz Connectivity kontrolü.

Çok basit bir şekilde kullanabiliyoruz.

var current = Connectivity.NetworkAccess;

if (current == NetworkAccess.Internet)
{
    // able to connect, do API call
}else{
    // unable to connect, alert user
}

Android için izinleri vermeyi unutmamamız gerekiyor 🙂

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

MenuBar

Desktop uygulamalarda navigasyonu ve menuleri yönetmek için kullanabileceğimiz bir yöntem olarak geldi.

MenuBar kullanımını her zaman olduğu gibi ister XAML ister C# tarafında kullanabiliyoruz. Fakat MenuBar kullanımının Shell ve NavigationPage kullanımı ile bir alakası yok. İster Shell ister NavigationPage kullanalım MenuBar tamamen bu yapılardan bağımsız bir şekilde kullanılabiliyor.

<ContentPage.MenuBarItems>
    <MenuBarItem Text="File">
        <MenuFlyoutItem Text="Quit" Command="{Binding QuitCommand}"/>
    </MenuBarItem>
    <MenuBarItem Text="Locations">
        <MenuFlyoutSubItem Text="Change Location">
            <MenuFlyoutItem Text="Boston, MA"/>
            <MenuFlyoutItem Text="Redmond, WA"/>
            <MenuFlyoutItem Text="St. Louis, MO"/>
        </MenuFlyoutSubItem>
        <MenuFlyoutItem Text="Add a Location" Command="{Binding AddLocationCommand}"/>
    </MenuBarItem>
    <MenuBarItem Text="View">
        <MenuFlyoutItem Text="Refresh" Command="{Binding RefreshCommand}"/>
        <MenuFlyoutItem Text="Toggle Light/Dark Mode" Command="{Binding ToggleModeCommand}"/>
    </MenuBarItem>
</ContentPage.MenuBarItems>
  • WinUI için Shell mimarisi (#4501)
  • iOS için Image caching (#4515)
  • Public API’larda Native yerine Platform isimlendirilmesi getirildi. (#4599)
  • Shapes üzerinde Line,Rectangle,RoundRectangle,Path,Polyline,Polygon handler getirildi (#4472)
  • StrokeShape XAML için string kullanımı getirildi (#3256)
  • WebView için cookies özelliği getirildi (#4419)
  • WinUI için MenuBar getirildi (#4839)
  • Windows için RTL flowdirection getirildi (#4936)

Essentials

MAUI.Essentials aslında Xamarin.Forms Essentials üzerinden base alındı. Genel olarak MAUI.Essentials uygulama geliştirirken ihtiyacımız olan birçok geliştirmeyi bize hazır olarak sağlıyor. Bu da uygulama geliştirme hızımızı yükseltirken maliyetlerimizi düşürüyor. Kullanımda olan yenilikler ise;

Accelerometer App Actions App Information
App Theme Barometer Battery
Clipboard Color Converters Compass
Connectivity Contacts Detect Shake
Display Info Device Info Email
File Picker File System Helpers Flashlight
Geocoding Geolocation Gyroscope
Haptic Feedback Launcher Magnetometer
MainThread Maps Media Picker
Open Browser Orientation Sensor Permissions
Phone Dialer Platform Extensions Preferences
Screenshot Secure Storage Share
SMS Text-to-Speech Unit Converters
Version Tracking Vibrate Web Authenticator

File Picker

FilePicker ve Maui.Essentials API kullanarak uygulamalarımızda dosya işlemlerini yapabiliyoruz. En basit haliyle;

<Button Text="Select a File" Clicked="OnClicked" />
async void OnClicked(object sender, EventArgs args)
{
    var result = await PickAndShow(PickOptions.Default);
}

async Task<FileResult> PickAndShow(PickOptions options)
{
    try
    {
        var result = await FilePicker.PickAsync(options);
        if (result != null)
        {
            Text = $"File Name: {result.FileName}";
            if (result.FileName.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) ||
                result.FileName.EndsWith("png", StringComparison.OrdinalIgnoreCase))
            {
                var stream = await result.OpenReadAsync();
                Image = ImageSource.FromStream(() => stream);
            }
        }

        return result;
    }
    catch (Exception ex)
    {
        // The user canceled or something went wrong
    }

    return null;
}

Kaynak : https://devblogs.microsoft.com/dotnet/dotnet-maui-preview-14/

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply