Références :
- https://ionicframework.com/docs/react
- https://ionicframework.com/docs/react/your-first-app
- https://ionicframework.com/docs/developing/android
- https://ionicframework.com/docs/components
- https://ionic.io/ionicons
- https://ionicframework.com/docs/native/setup
Qu'est ce que Ionic ?
En termes simples, Ionic est un framework libre d'utilisation qui permet de créer des applications mobiles pour iOS, Android et Windows Phone, à partir d'une base de code unique. En d'autres termes, Ionic est un outil de développement mobile multiplateforme.
Ionic a été fondé en 2012 par une start-up technologique appelée Drifty Co, et c'est aujourd'hui le meilleur framework open-source au monde pour la création d'applications mobiles (hybrides) multiplateformes.
Comment fonctionne Ionic ?
Ionic vous permet de développer des applications mobiles en utilisant les technologies et les langages du web comme HTML, CSS, JavaScript, Angular, React et TypeScript. Par conséquent, considérez Ionic comme un kit de développement logiciel (SDK) pour la création d'applications mobiles hybrides. En tant que tel, Ionic fournit une collection de composants qui imitent l'aspect, la convivialité et les fonctionnalités natives de chaque plateforme mobile. Ces composants comprennent par exemple des boutons, des onglets, des menus, des listes, des cartes, des modaux, etc.
En plus de ces composants qui donnent le style et l'aspect des applications mobiles, Ionic fournit également les comportements appropriés comme la navigation et les gestes - par exemple, le glissement, la rotation et les événements de pincement, pour n'en citer que quelques-uns. Ionic comprend également une collection d'icônes appelées Ionicons. Tous ces composants sont des éléments que vous utilisez dans la construction de vos applications ioniques, ainsi que les plugins Cordova et PhoneGap.
Prérequis
TypeScript
Voir le support de cours sur TypeScript
Custom Hook
Un hook personnalisé n'est qu'une fonction qui utilise d'autres hooks React.
https://react.dev/learn/reusing-logic-with-custom-hooks
Android Studio
- Installer Android Studio
- Installer Android 12.0 dans Android Studio : Tools > SDK Manager > Android 12.0
- Créer un device virtuel dans Android Studio : Pixel 6 API 30
React + TypeScript
Référence : https://create-react-app.dev/docs/adding-typescript/
Ressouce en français : https://grafikart.fr/tutoriels/ts-react-types-2042
Exercice 1
Créer une application React / TypeScript "testCounter" qui permet de créer un bouton "compteur" que l'on peut incrémenter et décrémenter au clic sur un bouton "+" et "-". Cette application qui utilisera
- le typage TypeScript notamment pour les "composants fonctionnels" cf : https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components
- useState cf : https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/hooks
Exercice 2
Créer une application React / TypeScript "tasks" qui permet de gérer des tâches. L'application utilisera :
- le typage TypeScript notamment pour les "composants fonctionnels" cf : https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components
- useState cf : https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/hooks
- Une interface que vous appelerez TaskInterface et que vous placerez dans le dossier "interfaces". Cette interface rendra obligatoire les propriétés "id" et "label" et optionnelle la propriété "date"
- Une interface que appellerez TasksInterface qui étendra le type Array et qui utilisera TaskInterface
- Un fichier tasks.json que vous placerez dans le répertoire "mocks"
- Une fonction "getTasks()" que vous exporterez depuis le fichier services/tasks.ts et qui renverra une promesse. Vous ne traiterez que le cas de figure où la promesse est tenue et "resolve" renverra les tasks que vous aurez importées depuis tasks.json
- les hooks "useState" et "useEffect". C'est dans "useEffect" que vous ferez appel à la fonction "getTasks" pour alimenter le state (via setTasks) après le premier rendu
Installation de Ionic avec windows
Installez la dernière version de node : https://nodejs.org/en/download/current/
Utilisez la console de Visual Studio Code pour lancer les commandes suivantes
npm install -g @ionic/cli ionic --version ionic start
A la question "Use the app creation wizard?", répondez "Y" et cela vous envoie sur le site web de ionic. Choisissez :
- first-ionic-app pour le nom de l'application
- choisissez une imoji
- une couleur
- Le templage "Menu"
- React pour frameword
Cliquez sur "Continuez"
Si vous n'avez pas encore de compte sur ionic, c'est le moment d'en créer un ou d'utiliser votre compte gihub par exemple.
Vous êtes ensuite automatiquement renvoyé vers une page locale du type "http://localhost:8123/?code=rCnbYKvJdGSqNroNVoC7Cz07UFCSbAFI3Hcn8BlyqzjGDnbG&state=74c4b6f2" dont le message principal est :
Your app is now building in your terminal!
Retournez sur la console de visual Studio Code
En cas de problèmes de droits
Utilisez "powerShell" pour donner les drois d'exécution des scripts :
Set-ExecutionPolicy unrestricted -Scope CurrentUser
Documentation
- Introduction générale : https://ionicframework.com/docs/
- Ionic et React : https://ionicframework.com/docs/react
- Capacitor, pour faire le pont avec les fonctionnalités natives aux smartphones
Commandes de base
cf https://ionicframework.com/docs/ja/cli/commands/build
ionic serve // pour lancer l'application
Ouvrir l'application sur Android Studio
cf https://ionicframework.com/docs/developing/android
Attention d'installer Android Studio et de bien ajouter au "Path" le SDK (Software Development Kit ) d'Android
ionic build // pour construire l'appliction exécutable par le navigateur ionic capacitor add android // pour ajouter la plateforme android ionic capacitor build android // pour construire l'application exécutable sur android (ou Android Studio) ionic capacitor open android // Pour lancer l'application avec Android Studio
Une fois que vous avez ouvert android depuis la console et depuis le répertoire racine de votre application, il vous faudra :
- créer un device (Android Virtual Device - Pixel 6 Pro par exemple)
- cliquer sur la flèche verte "Run App"
- Attendre, et parfois relancer pour enfin voir ce que cela donne dans un "device virtuel"
Exercice
Reprenez l'exercice concernant les tâches et adaptez le à ionic en n'utilisant ques des componenent ionic et notamment "IonList" et "IonReorderGroup".
Vous devriez optenir un résultat de ce type :