Répéter automatique par une boucle

Bonjour,

J’ai plusieurs fois cette instruction

    circle_color(v: 0, i2: 0, click:false),
    SizedBox(width: 10),

Y a t’il un moyen pour le répéter par une boucle?
Merci

Voici la partie totale

Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              circle_color(v: 0, i2: 0, click:false),
              SizedBox(
                width: 10,
              ),
              circle_color(v: 1, i2: 0, click:false),
              SizedBox(
                width: 10,
              ),
              circle_color(v: 2, i2: 0, click:false),
              SizedBox(
                width: 10,
              ),
              circle_color(v: 3, i2: 0, click:false),
            ],
          ),

Salut,
tu peux faire une boucle for
par exemple tu souhaite l’afficher 10 fois

for(var i = 0; i<10; i++){
   circle_color(v: 0, i2: 0, click:false),
   SizedBox(width: 10),
  }

tu peux changer le 10 par le nombre de fois ou tu veux répéter le code

Salut JoelP,
Merci pour m’avoir répondu mais malheureusement Flutter n’est pas aussi souple que ça il refuse l’instruction for sous un widget voir message suivant

164:40: Error: A value of type ‹ Set › can’t be assigned to a variable of type ‹ Widget ›.

  • ‹ Set › is from ‹ dart:core ›.
  • ‹ Widget › is from ‹ package:flutter/src/widgets/framework.dart › (’…/…/flutter/packages/flutter/lib/src/widgets/framework.dart’).
    for(var i = 0; i<10; i++){
    ^

et si tu créé une fonction qui elle va te générer ton code
ensuite tu l’appelle dans ton widget.
Peut être que ça peut fonctionner.

fontion(int nbBoucle)<widget>{
  return for(var i = 0; i< nbBoucle; i++){
       circle_color(v: 0, i2: 0, click:false),
       SizedBox(width: 10),
       };
}

Row(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
     fontion(10),
  ],
),

un truc comme çà

1 J'aime

Merci Joel pour ton aide vraiment je ne pensais pas qu’on pouvais mettre une fonction
j’ai fait un test avec un exemple a moi et j’ai une erreur sais-tu pourquoi j’arrive pas à trouver Merci
il crie au niveau de la fonctionLoop c’est une erreur de syntaxe

class MyApp2 extends StatelessWidget {
  int nbBoucle=10;

  fonctionLoop<widget>(int nbBoucle) {
        return for(int i = 0; i< nbBoucle; i++) {
                  Text("Message:"+i.toString());
               };
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            body: Center(
              child:Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  fonctionLoop(10),
                ],
              ),
            ),
        )
    );
  }
}

Au lieu de

Text("Message:"+i.toString());

met plutôt

 Text("Message:"+i.toString()),

J’ai fait comme tu as dit mais j’ai toujours cette erreur
J’ai l’impression que c’est le for qui pose probléme

13:12: Error: Expected an identifier, but got ‹ for ›.
return for(int i = 0; i< nbBoucle; i++) {
^^^
lib/main.dart:13:12: Error: Expected ‹ ; › after this.
return for(int i = 0; i< nbBoucle; i++) {
^^^
lib/main.dart:14:40: Error: Expected ‹ ; › after this.
Text(« Message: »+i.toString()),
^
lib/main.dart:14:41: Error: Expected an identifier, but got ‹ , ›.
Text(« Message: »+i.toString()),
^
lib/main.dart:14:41: Error: Expected ‹ ; › after this.
Text(« Message: »+i.toString()),
^
lib/main.dart:14:41: Error: Unexpected token ‹ , ›.
Text(« Message: »+i.toString()),

Essaie de mettre le return au niveau du text plutôt que de for

Ou tu peux peut-être créer une variable de type widget qui sera égal à ta boucle for et tu fera un return de ta variable

J’ai fini par trouver cette solution mais je n’arrive pas par exemple a avoir plusieurs text et je n’arrive pas a avoir l’accolade au niveau du for sinon y a une erreur

voici ce que j’ai fait qui fonctionne très bien Flutter n’est pas très maniable je trouve :frowning:

  class MyApp extends StatelessWidget {
  int nbBoucle=10;

  fonctionLoop<widget>(int nbBoucle) {
    return new Column(
        children: [
             for(int i = 0; i< nbBoucle; i++)
                 Text("Message:"+i.toString()),
          ],
        );
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          body: Center(
            child:Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                fonctionLoop(10),
              ],
            ),
          ),
        )
    );
  }
}

si tu met :

for(int i = 0; i< nbBoucle; i++)
             Text("Message:"+i.toString()),

à la place de

fonctionLoop(10),

ça ne marche pas ?

ça fonctionne aussi mais j’aimerai vraiment savoir pourquoi ma version précédente ne fonctionne pas avec une boucle for et plusieurs Text ? merci pour ton aide

tu peux me remettre ton code de la version précédente?

Ce code fonctionne très bien seulement je peux pas
Mettre des accolages dans la boucle for pour avoir deux text

class MyApp extends StatelessWidget {
  int nbBoucle=10;

  fonctionLoop<widget>(int nbBoucle) {
    return new Column(
        children: [
             for(int i = 0; i< nbBoucle; i++)
                 Text("Message:"+i.toString()),
          ],
        );
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          body: Center(
            child:Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                fonctionLoop(10),
              ],
            ),
          ),
        )
    );
  }
}

tu as essayé avec une column dans ton for

return new Column(
    children: [
         for(int i = 0; i< nbBoucle; i++)
          Column(
             children [
             Text("Message:"+i.toString()),
             Text("Message:"+i.toString()),
             ]),
      ],
    );

JoelP

Merci vraiment pour ton aide et ta patience ça fonctionne très bien maintenant
J’ai fait un très grand pas grace à toi je ne connaissais pas la fonction for dans un widget
habituellement je répéter les fonctions bêtement :wink:

Bonne journée et encore Merci JoelP

De rien après Stephan aura peut être un code un peu mieux car je suis encore débutant sur flutter et c’est souvent du système D.

Résoudre les problèmes des autres aide aussi à progresser :wink:

Si t’es débutant alors moi je suis encore plus débutant :wink:
en tout cas vraiment merci pour ton aide JoelP j’ai beaucoup appris avec toi

1 J'aime