Guide simple pour changer de page après une durée fixée


Avatar de Pierre Courtois

Dans ce guide, je vous explique comment utiliser un Timer pour effectuer une transition automatique entre deux widgets dans Flutter.


transition between widgets

Comment afficher ou faire disparaitre du contenu après un délai dans Flutter ?

Créer une transition avec un timer dans Flutter est assez facile à mettre en place. Je vous explique ici comment faire, grâce à un code d’exemple que vous pouvez adapter selon vos besoins. 

Étape 1 : Importer les packages nécessaires

La première chose à faire, si vous ne l’avez pas déjà faite, est d’importer les deux packages dont vous aurez besoin pour mettre en place un Timer et construire vos pages : 

  • package/material.dart : Ce paquet est la bibliothèque de base pour le développement d’applications Flutter avec Material Design.
  • dart async : Ce paquet est nécessaire pour utiliser le Timer.
import 'dart:async';
import 'package:flutter/material.dart';

Étape 2 : Mise en place de la structure de votre application

Comme pour n’importe quelle application, vous allez d’abord devoir mettre en place une fonction main void() pour la lancer. Vous aurez également besoin de créer un widget A qui correspond à la page montrée initialement et un widget B qui s’affichera à l’issue du Timer.

main() {
 runApp(const MyApp());
}


//MY APP
class MyApp extends StatelessWidget {
 const MyApp({super.key});
 @override
 Widget build(BuildContext context) {
   return const MaterialApp(
     debugShowCheckedModeBanner: false,
     home: IntroScreen(),
   );
 }
}

Ici, la fonction runApp, va lancer mon widget myApp, qui par défaut contient le widget IntroScreen (widget A).

Mon widget A qui sert de page d’introduction : 

class IntroScreen extends StatefulWidget {
 const IntroScreen({super.key});


 @override
 State<IntroScreen> createState() => _IntroScreenState();
}


class _IntroScreenState extends State<IntroScreen>


 @override
 Widget build(BuildContext context) {
   return Scaffold(
       body: Container(
           width: double.infinity,
           height: double.infinity,
           color: Color.fromARGB(255, 239, 132, 124),
           child: const Center(child: Text("Ma page d'intro", style: TextStyle(fontSize: 25),))));
 }
}

Mon widget B qui me sert de page principale :

class HomeScreen extends StatelessWidget {
 const HomeScreen({super.key});


 @override
 Widget build(BuildContext context) {
   return Scaffold(
     body: Container(
         width: double.infinity,
         height: double.infinity,
         color: const Color.fromARGB(255, 121, 164, 186),
         child: const Center(
           child: Text("Ma page principale", style: TextStyle(fontSize: 25)),
         )),
   );
 }
}

Étape 3 : Mettre en place le timer

Enfin, ne reste plus qu’à placer le timer dans votre widget A, qui va se lancer dès que l’écran est in initialisé ( iniState() ). Une fois, le décompte écoulé, la fonction que vous aurez définie va se lancer. Dans le cas présent, ma page d’introduction va disparaitre après 3 seconde, pour être remplacée par ma page principale :

class IntroScreen extends StatefulWidget {
 const IntroScreen({super.key});


 @override
 State<IntroScreen> createState() => _IntroScreenState();
}


class _IntroScreenState extends State<IntroScreen>
   {
 @override
 void initState() {
   super.initState();
   Timer(const Duration(seconds: 3), () {
     runApp(const MaterialApp(
         debugShowCheckedModeBanner: false,
         home: HomeScreen()));
   });
 }


 @override
 Widget build(BuildContext context) {
   return Scaffold(
       body: Container(
           width: double.infinity,
           height: double.infinity,
           color: Color.fromARGB(255, 239, 132, 124),
           child: const Center(child: Text("Ma page d'intro", style: TextStyle(fontSize: 25),))));
 }
}

Enfin, vous pouvez bien-sûr ajouter un effet de transition entre vos pages ou ajouter des déclarations conditionnelles pour rediriger vers une page différente selon différents cas de figures. Tout cela devra alors être ajouté dans la fonction iniState().

Plus de guides Flutter

À la recherche de plus de guides pour coder rapidement une application Flutter dynamique ? Pourquoi ne pas consulter la liste complète ?

Avatar de Pierre Courtois