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")),
],
),
),
);
}
}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")),
],
),
),
);
}
}
