web-dev-qa-db-fra.com

le type d'élément 'List <widget>' ne peut pas être affecté au type de liste 'Widget'

J'essaie d'ajouter des données à l'aide de la boucle for dans gridview mais cela montre une erreur. Voici mon code pour le composant

return new GridView.count(
    crossAxisCount: 2,
    padding: const EdgeInsets.all(10.0),
    crossAxisSpacing: 10.0,
    mainAxisSpacing: 10.0,
    children: <Widget>[getList()],
);

code getList ()

List<Widget> getList() {
  List<Widget> childs = [];
  for (var i = 0; i < 10; i++) {
    childs.add(new ListItem('abcd ' + $i));
  }
  return childs;
}

Mais il montre une erreur de temps de compilation.

The element type 'List<widget>' can't be assigned to the list type 'Widget'
11
Ravi Rupareliya

Ici, vous enveloppez une liste en tant que liste

children: <Widget>[getList()],

Cela devrait plutôt être

children: getList(),
21

Comme la réponse n'était pas satisfaisante pour moi, j'ai donc trouvé une autre solution.

Flutter vous donne la possibilité d'écrire des conditions sur une seule ligne également dans le graphique, vous pouvez donc insérer un cycle sur une seule ligne, puis insérer les autres widgets différents. Ceci est un exemple pratique en réponse à la question principale:

 Column(
    children: <Widget>
      [
        for (int i = 0;
        i < workouts.series.length;
        i++)
          "//CREATE N YOUR WIDGETS//",
          new Text(
          "${workouts.series.length} x ${exerciseWorkout.repsToDo} ",
          style: TextStyle(
          color: Colors.black87,
          fontSize: 16,
          fontWeight: FontWeight.bold),
          )
      ],
     )
1
AlexPad