.net Maui Custom Handler

4 min read Jun 04, 2024
.net Maui Custom Handler

Personnaliser le Gestionnaire de Navigation dans .NET MAUI

.NET MAUI offre un système de navigation flexible et puissant, mais il arrive parfois que vous ayez besoin de plus de contrôle sur le processus de navigation. C'est là qu'interviennent les gestionnaires personnalisés (custom handlers).

Pourquoi utiliser un gestionnaire personnalisé ?

Les gestionnaires personnalisés vous permettent d'intercepter et de modifier le comportement de la navigation par défaut. Par exemple, vous pouvez:

  • Ajouter de la logique métier avant ou après la navigation: Validation des données, authentification, etc.
  • Surcharger la navigation par défaut: Avoir une logique de navigation spécifique pour certaines pages ou types d'actions.
  • Gérer les erreurs de navigation: Afficher un message d'erreur ou rediriger vers une page d'erreur.

Comment créer un gestionnaire personnalisé

Pour créer un gestionnaire personnalisé, vous devez hériter de la classe INavigationHandler et implémenter la méthode CanHandle. Cette méthode doit renvoyer true si le gestionnaire peut gérer la navigation actuelle. Vous pouvez également implémenter la méthode Handle pour exécuter du code avant ou après la navigation.

public class MyNavigationHandler : INavigationHandler
{
    public bool CanHandle(NavigationRequest request)
    {
        // Vérifier si la navigation correspond à notre logique
        return request.Uri.ToString().Contains("mypage");
    }

    public async Task Handle(NavigationRequest request)
    {
        // Exécuter du code avant ou après la navigation
        await Task.Delay(1000);

        // Continuer la navigation
        await request.NavigationService.NavigateTo(request.Uri);
    }
}

Enregistrement du gestionnaire

Une fois le gestionnaire créé, vous devez l'enregistrer auprès du service de navigation. Vous pouvez le faire dans le constructeur de votre application ou dans un autre point d'entrée approprié.

public class App : Application
{
    public App()
    {
        // Enregistrer le gestionnaire
        NavigationService.RegisterHandler(new MyNavigationHandler());
    }
}

Exemple d'utilisation

Imaginez que vous souhaitez valider un formulaire avant de naviguer vers la page suivante. Vous pouvez utiliser un gestionnaire personnalisé pour intercepter la navigation et effectuer la validation.

public class MyNavigationHandler : INavigationHandler
{
    public bool CanHandle(NavigationRequest request)
    {
        // Vérifier si la navigation est vers la page de confirmation
        return request.Uri.ToString().Contains("confirmation");
    }

    public async Task Handle(NavigationRequest request)
    {
        // Valider le formulaire
        if (!ValidateForm())
        {
            // Afficher un message d'erreur
            await Shell.Current.CurrentPage.DisplayAlert("Erreur", "Veuillez corriger les erreurs dans le formulaire.", "OK");
            return;
        }

        // Continuer la navigation
        await request.NavigationService.NavigateTo(request.Uri);
    }
}

Conclusion

Les gestionnaires personnalisés vous permettent d'ajouter de la logique et de la flexibilité à votre navigation dans .NET MAUI. Ils sont particulièrement utiles lorsque vous devez valider des données, gérer les erreurs ou personnaliser le comportement de la navigation en fonction de votre application.

Featured Posts