Loupe

Les bibliothèques indispensables du développeur Xamarin

Dans cet article j'ai essayé de regrouper les bibliothèques qui selon moi sont à connaître pour le développement d'application via Xamarin.

N'hésitez pas à réagir via les commentaires ou via twitter si vous estimez que j'ai oublié une bibliothèque.

Dans cet article nous verrons des bibliothèques permettant de :

Accéder au système de fichier avec une seule API

PCLStorage : Il n’a jamais été aussi facile d’accéder au système de fichier.

Chaque système d'exploitation dispose d’un système de fichiers différent : on doit donc implémenter une manipulation du système de fichier par plateforme.

Or PCLStorage permet d'accéder au système de fichier avec une API unique.

  • PCLStorage, qui permet de manipuler le filesystem de manière uniforme
  • Utilisable directement depuis une PCL ou .NetStandard
  • Le code PCL ne contient pas directement les implémentations, qui sont « platform-specific »
  • Entièrement asynchrone

    Attention il ne semble plus maintenu, il va falloir trouver dans un futur proche une alternative.

    Si vous ciblez des plateformes compatible avec .NetStandard 2.0 vous n'avez plus du tout besoin de cet lib.

Création d'un dossier et d'un fichier :

IFolder rootFolder = FileSystem.Current.LocalStorage;
IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder",
        CreationCollisionOption.OpenIfExists);
IFile file = await folder.CreateFileAsync("answer.txt",
        CreationCollisionOption.ReplaceExisting);
await file.WriteAllTextAsync("42");

Lien vers le GitHub

Lien vers le nuget

Partager avec une seule API (iOS/Android)

PlugInShare est le moyen le plus simple de partager un message, un lien, ou copier des informations dans le presse-papier.

Partage d'une url :

public void ShareBlog()
{
    if(!CrossShare.IsSupported)
        return;

    CrossShare.Current.Share(new ShareMessage
    {
       Title = "Blog IS",
       Text = "Le blog IS",
       Url = "http://blogs.infinitesquare.com/"
    });
}

Lien vers le github

Lien vers le nuget

Plateformes supportées :

Plateforme Version
Xamarin.iOS iOS 8+
Xamarin.Android API 14+
Windows 10 UWP 10+

 

Connaitre sa connectivité

Xam.Plugin.Connectivity : Connaitre la connectivé de son application simplement.

Vérifier si l'application a accès à internet :

CrossConnectivity.Current.IsConnected


Vérifier si le device est connecté au Wifi :

 var wifi  = ConnectionType.WiFi;
   
 var connectionTypes = CrossConnectivity.Current.ConnectionTypes;
    if(!connectionTypes.Contains(wifi))
    {
      //You do not have wifi
      return null;
    }

Lien vers le GitHub

Lien vers le nuget

Plateformes supportées :

Plateforme Version
Xamarin.iOS iOS 6+
tvOS - Apple TV All
Xamarin.Android API 10+
Windows 10 UWP 10+
Xamarin.Mac All
.NET 4.5/WPF All
.NET Core 2.0+
Tizen 4.0+

 

Lire et écrire dans les Settings

Xam.Plugin.Settings : Mes paramètres sont multiplateformes.
Permet de créer des settings d’applications de façon unifiée sur les 3 plateformes

Créer un paramètre de type string :

private static ISettings AppSettings =>
    CrossSettings.Current;

public static string UserName
{
  get => AppSettings.GetValueOrDefault(nameof(UserName),string.Empty); 
  set => AppSettings.AddOrUpdateValue(nameof(UserName), value); 
}

Lien vers le GitHub

Lien vers le nuget

Plateformes supportées :

Platforme Version
Xamarin.iOS iOS 7+
Xamarin.Android API 15+
Windows 10 UWP 10+
Xamarin.Mac All
Xamarin.tvOS All
Xamarin.watchOS All
.NET 4.5+
.NET Core 2.0+

 

Afficher des graphiques

Microcharts permet de créer des graphique sur iOS et Android avec le même code.
Un contrôle Xamarin.Forms est aussi disponible.
Line.png.

Création d'un graphique :

var entries = new[]
{
    new Entry(200)
    {
        Label = "January",
        ValueLabel = "200",
	FillColor = SKColor.Parse("#266489")
    },
    new Entry(400)
    {
	Label = "February",
	ValueLabel = "400",
	FillColor = SKColor.Parse("#68B9C0")
    },
    new Entry(-100)
    {
	Label = "March",
	ValueLabel = "-100",
	FillColor = SKColor.Parse("#90D585")
    }
};

var chart = new LineChart() { Entries = entries };

Lien vers le GitHub

Lien vers le nuget

Afficher des images de façon optimisée

1/ Sur Android

Square Picasso est la librairie incontournable pour afficher des images et les mettre cache sur Android.

Picasso.With(context) .Load("http://i.imgur.com/DvpvklR.png") .Into(imageView);


Lien vers le nuget

Plateformes supportées :

Plateforme Version
Xamarin.Android API 14+

 

2/ Sur iOS

SDWebImage est l'équivalent de Picasso mais sur iOS.
Il supporte notament le format d'image GIF.
Comme Picasso, il télécharge les images en asynchrone et gére aussi le cache des images téléchargées.

Télécharge une image et affiche un placeholder durant le téléchargement :

using SDWebImage;
...

imageView.SetImage (
        url: new NSUrl ("http://www.monimage.png"), 
        placeholder: UIImage.FromBundle ("placeholder.png")
    );

 Lien vers le nuget

Plateforme Version
Xamarin.iOS iOS7+

Créer plus simplement des contraintes

Cirrious.FluentLayout : permet de créer des contraintes iOS de façon plus simple.

Exemple de création de contraintes :

View.AddConstraints(
  fNameLabel.AtTopOf(View, vMargin),
  fNameLabel.AtLeftOf(View, hMargin),
  fNameLabel.ToLeftOf(sNameLabel, hMargin),

  sNameLabel.WithSameTop(fNameLabel),
  sNameLabel.AtRightOf(View, hMargin),
  sNameLabel.WithSameWidth(fNameLabel),

  fNameField.WithSameWidth(fNameLabel),
  fNameField.WithSameLeft(fNameLabel),
  fNameField.Below(fNameLabel, vMargin),

  sNameField.WithSameLeft(sNameLabel),
  sNameField.WithSameWidth(sNameLabel),
  sNameField.WithSameTop(fNameField));

Lien vers le GitHub

Lien vers le nuget

Plateformes supportées :

Plateforme Version
Xamarin.iOS iOS

 


Avec tous ces bibliothèques vous êtes prêt à développer des apps Xamarin en un rien de temps.

Happy coding :)

Pour aller plus loin :

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus