Comment générer un nombre aléatoire dans Flutter ?


Avatar de Pierre Courtois

Les fonctions de base de Flutter ne permettent pas de créer des nombres aléatoires. Vous aurez besoin d’importer le package math Random qui va vous donner accès à de nouvelles méthodes. Dans ce guide, je vous explique les différentes fonctions que vous pouvez utiliser.


Chiffres aléatoires sur des blocs de couleur

Créer un nombre aléatoire dans Flutter 

Le package material.dart ne permet pas de créer des nombres aléatoires. Pour cela, ajoutez la ligne import 'dart:math'; en haut de votre fichier Dart. Vous aurez alors accès à la méthode Random().nextInt(), qui génère un nombre aléatoire. Indiquez la valeur maximale entre les parenthèses pour obtenir une valeur aléatoire comprise entre 0 et cette valeur.

Je vous partage ici un code très simple où la valeur de mon nombre, comprise entre 0 et 200, change à chaque clic : 

import 'package:flutter/material.dart';
import 'dart:math';


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


class MyApp extends StatelessWidget {
 const MyApp({super.key});
 @override
 Widget build(BuildContext context) {
   return const MaterialApp(
     home: MyHomePage(title: 'Flutter Demo Home Page'),
   );
 }
}


class MyHomePage extends StatefulWidget {
 const MyHomePage({super.key, required this.title});
 final String title;


 @override
 State<MyHomePage> createState() => _MyHomePageState();
}


class _MyHomePageState extends State<MyHomePage> {
 int nombreRandom = 0;
 @override
 Widget build(BuildContext context) {
   return Scaffold(
     body: Center(
       child: Column(
         mainAxisAlignment: MainAxisAlignment.center,
         children: <Widget>[
           Text("Le nombre est : ${nombreRandom.toString()}",
               style: const TextStyle(
                 fontSize: 30,
               )),
           ElevatedButton(
               onPressed: () {
                 setState(() {
                   nombreRandom = Random().nextInt(200);
                 });
               },
               child: const Text("Changer de nombre")),
         ],
       ),
     ),
   );
 }
}

Génerer un nombre decimal aléatoire

La méthode Random().nextInt() génère uniquement des nombres entiers. Si vous avez besoin de nombres décimaux, utilisez Random().nextDouble(), qui renvoie une valeur comprise entre 0 et 1. Multipliez ensuite cette valeur par le maximum souhaité. Par exemple, pour un maximum de 17.6, utilisez Random().nextDouble() * 17.6.

Voici un exemple :

import 'package:flutter/material.dart';
import 'dart:math';


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


class MyApp extends StatelessWidget {
 const MyApp({super.key});
 @override
 Widget build(BuildContext context) {
   return const MaterialApp(
     home: MyHomePage(title: 'Flutter Demo Home Page'),
   );
 }
}


class MyHomePage extends StatefulWidget {
 const MyHomePage({super.key, required this.title});
 final String title;


 @override
 State<MyHomePage> createState() => _MyHomePageState();
}


class _MyHomePageState extends State<MyHomePage> {
 double nombreRandom = 0;
 @override
 Widget build(BuildContext context) {
   return Scaffold(
     body: Center(
       child: Column(
         mainAxisAlignment: MainAxisAlignment.center,
         children: <Widget>[
           Text("Le nombre est : ${nombreRandom.toString()}",
               style: const TextStyle(
                 fontSize: 20,
               )),
           ElevatedButton(
               onPressed: () {
                 setState(() {
                   nombreRandom = (Random().nextDouble() * 200) ;
                 });
               },
               child: const Text("Changer de nombre")),
         ],
       ),
     ),
   );
 }
}

Arrondir un nombre décimal à l’entier le plus proche

Pour arrondir un nombre décimal généré aléatoirement, mettez votre opération entre parenthèses et ajoutez-y la méthode .toInt à la fin. Par exemple : nombreRandom = (Random().nextDouble() * 200).toInt();

Générer un booléen aléatoire

Enfin, Flutter vous permet aussi de générer un booléen aléatoire (vrai ou faux), grâce à la méthode Random.nextBool() :

import 'package:flutter/material.dart';
import 'dart:math';


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


class MyApp extends StatelessWidget {
 const MyApp({super.key});
 @override
 Widget build(BuildContext context) {
   return const MaterialApp(
     home: MyHomePage(title: 'Flutter Demo Home Page'),
   );
 }
}


class MyHomePage extends StatefulWidget {
 const MyHomePage({super.key, required this.title});
 final String title;


 @override
 State<MyHomePage> createState() => _MyHomePageState();
}


class _MyHomePageState extends State<MyHomePage> {
 bool nombreRandom = true;
 @override
 Widget build(BuildContext context) {
   return Scaffold(
     body: Center(
       child: Column(
         mainAxisAlignment: MainAxisAlignment.center,
         children: <Widget>[
           Text("La valeur est : ${nombreRandom.toString()}",
               style: const TextStyle(
                 fontSize: 20,
               )),
           ElevatedButton(
               onPressed: () {
                 setState(() {
                   nombreRandom = Random().nextBool();
                 });
               },
               child: const Text("Changer de nombre")),
         ],
       ),
     ),
   );
 }
}

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