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 (Windows/iOS/Android)
- Partager avec une seule API (Windows/iOS/Android)
- Connaitre sa connectivité (Windows/iOS/Android)
- Lire et écrire dans les Settings (Windows/iOS/Android)
- Afficher des graphiques (Windows/iOS/Android)
- Afficher des images de façon optimisé (iOS/Android)
- Créer plus simplement des contraintes sur (iOS)
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");
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/" }); }
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; }
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); }
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.
.
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 };
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);
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") );
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));
Plateformes supportées :
Plateforme | Version |
---|---|
Xamarin.iOS | iOS |
Happy coding :)
Avec tous ces bibliothèques vous êtes prêt à développer des apps Xamarin en un rien de temps.
Pour aller plus loin :
Commentaires