Xamarin'de MVVM ile Login Page Yapımı

Xamarin

Xamarin'de MVVM ile Login Page Yapımı

Giriş
Xamarin.Forms'da MVVM (Model-View-ViewModel) deseni, kullanıcı arayüzü ve iş mantığını ayrı tutarak uygulamaları daha sürdürülebilir ve test edilebilir hale getirir. Bu makalede, MVVM deseni kullanarak bir login (giriş) sayfası oluşturmayı öğreneceğiz. Kullanıcıdan alınan giriş bilgilerini doğrulamak için ViewModel ile Model arasındaki iletişim üzerinde duracağız.

MVVM'nin Login Page Uygulamasına Katkıları
MVVM, kullanıcı giriş işlemleri gibi senaryolarda birçok avantaj sağlar:

  • Bağımsız UI ve İş Mantığı: Login işlemleri için gerekli iş mantığı ViewModel içinde yazılarak UI'den ayrılır.
  • Test Edilebilirlik: Giriş doğrulama mantığı ViewModel içinde yazıldığı için kolayca birim testlere tabi tutulabilir.
  • Veri Bağlama (Data Binding): Kullanıcı arayüzü ViewModel ile veri bağlama kullanarak iletişim kurar.

1. Model Tanımlama

Giriş işlemi için bir User model sınıfı oluşturacağız:

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }
}

Bu model, kullanıcıdan alınacak verileri temsil eder.

2. ViewModel Tanımlama

LoginViewModel sınıfı, kullanıcı giriş işlemleriyle ilgili iş mantığını içerecek:

using System.ComponentModel;
using System.Windows.Input;
using Xamarin.Forms;

public class LoginViewModel : INotifyPropertyChanged
{
    private string username;
    private string password;
    private string message;

    public string Username
    {
        get => username;
        set
        {
            if (username != value)
            {
                username = value;
                OnPropertyChanged(nameof(Username));
            }
        }
    }

    public string Password
    {
        get => password;
        set
        {
            if (password != value)
            {
                password = value;
                OnPropertyChanged(nameof(Password));
            }
        }
    }

    public string Message
    {
        get => message;
        set
        {
            if (message != value)
            {
                message = value;
                OnPropertyChanged(nameof(Message));
            }
        }
    }

    public ICommand LoginCommand { get; }

    public LoginViewModel()
    {
        LoginCommand = new Command(OnLogin);
    }

    private void OnLogin()
    {
        // Basit bir giriş doğrulama örneği
        if (Username == "admin" && Password == "1234")
        {
            Message = "Giriş Başarılı!";
        }
        else
        {
            Message = "Geçersiz Kullanıcı Adı veya Şifre";
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Açıklama:
LoginViewModel içinde kullanıcı adı ve şifre için Username ve Password özellikleri bulunur. LoginCommand adlı bir ICommand ile login işlemi başlatılır. Kullanıcı giriş bilgileri doğrulandıktan sonra, Message özelliği ile bir geri bildirim gösterilir.

3. View (XAML) Tanımlama

Login ekranı için bir ContentPage tasarlayalım:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.LoginPage"
             Title="Login Page">
    <ContentPage.BindingContext>
        <local:LoginViewModel />
    </ContentPage.BindingContext>

    <StackLayout Padding="20" VerticalOptions="Center">
        <Label Text="Kullanıcı Adı" />
        <Entry Text="{Binding Username}" Placeholder="Kullanıcı adınızı girin" />
        
        <Label Text="Şifre" />
        <Entry Text="{Binding Password}" Placeholder="Şifrenizi girin" IsPassword="True" />
        
        <Button Text="Giriş Yap" Command="{Binding LoginCommand}" />
        
        <Label Text="{Binding Message}" TextColor="Red" />
    </StackLayout>
</ContentPage>

Açıklama:
Username ve Password girişleri, ViewModel'deki özelliklere bağlanır. Button ile LoginCommand tetiklenir ve kullanıcı giriş doğrulama işlemi yapılır. Message özelliği üzerinden kullanıcıya giriş durumu hakkında geri bildirim gösterilir.

Sonuç

Bu basit örnekte, Xamarin.Forms'da MVVM mimarisi kullanarak bir login sayfası nasıl oluşturulacağını öğrendik. ViewModel'deki iş mantığı sayesinde View (görünüm) daha temiz ve anlaşılır kalır, bu da uygulamayı daha sürdürülebilir hale getirir. Daha karmaşık giriş doğrulama senaryolarında Model katmanını genişleterek veri doğrulama veya API çağrıları gibi işlevsellikler ekleyebilirsiniz.