Générer une chaîne de caractères
Il n’existe pas de méthode dans Flutter permettant facilement de créer une chaîne de caractère. Cela peut pourtant s’avérer nécessaire dans certaines situations, par exemple pour générer un mot de passe aléatoire. Je vous donc vous montrer ici comment coder une fonction qui va vous permettre de générer une chaîne de caractères aléatoires qui prendra comme paramètres :
- Les caractères admis ;
- La longueur de la chaîne.
Voici donc les étapes pour créer des chaînes de caractères aléatoires dans Flutter :
- Ajoutez le package dart:math à votre fichier dart ;
- Créez une variable qui va contenir, sur une seule ligne, tous les caractères admis dans votre chaîne. Par exemple, si vous voulez une chaine composée de lettres allant de a à e, en minuscule ou en majuscule, votre variable aura une valeur de “AaBbCcDdEe” ;
- Créez une deuxième variable de type Random, qui aura pour valeur Random() ;
- Enfin, vous allez pouvoir créer notre fameuse fonction renvoyant un String et prenant comme argument un nombre qui correspondra à la longueur de votre chaîne.
Une fois codé en entier, on obtient :
import 'package:flutter/material.dart';
import 'dart:math';
const _valeursAdmises =
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
Random _random = Random();
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> {
String chaineAleatoire = "";
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("La chaîne est : ${chaineAleatoire}",
style: const TextStyle(
fontSize: 25,
)),
ElevatedButton(
onPressed: () {
setState(() {
chaineAleatoire = getRandomString(10);
});
},
child: const Text("Changer de nombre")),
],
),
),
);
}
String getRandomString(int length) => String.fromCharCodes(Iterable.generate(
length,
(_) =>
_valeursAdmises.codeUnitAt(_random.nextInt(_valeursAdmises.length))));
}