The argument type 'Iterable<dynamic>' can't be assigned to the parameter type 'List<Widget>'

238

Solution 1

just keep it simple

Solution:

Column(
    children: quotes.map((quote) => Text('${quote.text} '
        '- ${quote.author}')).toList()
    );

Solution 2

so try this

List<Quote> quotes = [
    //"Quote" is the the name of the class of the second dart file.
    Quote(
        author: "Eminem",
        text:
            "You better lose yourself in music the moment you own it never let it go"),
    Quote(
        author: "Walt Disney",
        text: "The way to get started is to quit talking and begin doing."),
    Quote(
        author: "Mother Teresa",
        text:
            "Spread love everywhere you go. Let no one ever come to you without leaving happier")
  ];

as your list

then your widget

return Scaffold(
      backgroundColor: Colors.grey[200],
      appBar: AppBar(
        title: Text("Awesome Killer Quotes",
            style: TextStyle(
              color: Colors.grey[700],
            )),
        centerTitle: true,
        backgroundColor: Colors.yellowAccent[400],
      ),
      body: Column(
     children: quotes.map((e)
                         =>Text('${e.text}')
         ).toList(),
     ),
    );
Share:
238
damigesh
Author by

damigesh

Updated on January 04, 2023

Comments

  • damigesh
    damigesh over 1 year

    Hi guys please i'm trying to map a list of strings in my code but its is give me the error "The argument type 'Iterable' can't be assigned to the parameter type 'List'.". I'm trying to reproduce the result in the picture below. Here is the code below;

    **quote.dart**
    
    class Quote {
    
      String? text;
      String? author;
    
      
     
    
      
      Quote({ required this.text,required this.author });
    
    }
    
    
    **main.dart**
    
    void main() {
      runApp(MaterialApp(home: QuoteList()));
    }
    
    class QuoteList extends StatefulWidget {
      const QuoteList({Key? key}) : super(key: key);
    
      @override
      State<QuoteList> createState() => _QuoteListState();
    }
    
    class _QuoteListState extends State<QuoteList> {
    
      @override
      List<dynamic> quotes = [
        //"Quote" is the the name of the class of the second dart file.
        Quote(
            author: "Eminem",
            text:
                "You better lose yourself in music the moment you own it never let it go"),
        Quote(
            author: "Walt Disney",
            text: "The way to get started is to quit talking and begin doing."),
        Quote(
            author: "Mother Teresa",
            text:
                "Spread love everywhere you go. Let no one ever come to you without leaving happier")
    
        //
        //     "
        //     ". -"
      ];
      
      
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.grey[200],
          appBar: AppBar(
            title: Text("Awesome Killer Quotes",
                style: TextStyle(
                  color: Colors.grey[700],
                )),
            centerTitle: true,
            backgroundColor: Colors.yellowAccent[400],
          ),
          body: Column(
         children: quotes.map(children: quotes.map((quote) => Text('${quote.text} - 
                 ${quote.author}')).toList(),
             // (quote) => Text(quote.text + "-" + quote.author).toList(),
             // ((quote) => quoteTemplate(quote).toList()),
            ),
            // 
    
            //return Text('>>'+quote.text+', '+quote.author);
          ),
        );
      }
    }
    

    If anybody can help me I will really appreciate it🙏🙏 P.S the error is in the main.dart file

    Expected result of the code

    • Arbiter Chil
      Arbiter Chil about 2 years
      try Change List<dynamic> quotes to List<Quote> quotes you accessing the list with it's own model you've created
  • damigesh
    damigesh about 2 years
    I swear i have tried this before it didn't work🤦‍♂️😟but it's working now Thanks very much🙏