.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;

AccelerometerApp ActionsApp Information
App ThemeBarometerBattery
ClipboardColor ConvertersCompass
ConnectivityContactsDetect Shake
Display InfoDevice InfoEmail
File PickerFile System HelpersFlashlight
GeocodingGeolocationGyroscope
Haptic FeedbackLauncherMagnetometer
MainThreadMapsMedia Picker
Open BrowserOrientation SensorPermissions
Phone DialerPlatform ExtensionsPreferences
ScreenshotSecure StorageShare
SMSText-to-SpeechUnit Converters
Version TrackingVibrateWeb 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