Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

the element type 'List<widget>' can't be assigned to the list type 'Widget'

I am trying to add data using for loop in gridview but it is showing some error. Here is my code for component

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

getList() code

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

But it is showing compile time error.

The element type 'List<widget>' can't be assigned to the list type 'Widget' 
like image 492
Ravi Avatar asked May 17 '18 13:05

Ravi


2 Answers

Here you are wrapping a list as list

children: <Widget>[getList()], 

This should rather be

children: getList(), 
like image 78
Günter Zöchbauer Avatar answered Sep 19 '22 18:09

Günter Zöchbauer


Just use spread operator:

return new GridView.count(     crossAxisCount: 2,     padding: const EdgeInsets.all(10.0),     crossAxisSpacing: 10.0,     mainAxisSpacing: 10.0,     children: <Widget>[...getList()], ); 
like image 27
Darek Adamkiewicz Avatar answered Sep 21 '22 18:09

Darek Adamkiewicz