Masahiro Okubo

The argument type ‘Iterable<Row>‘ can’t be assigned to the parameter type ‘List<Widget>‘.

The argument type ‘Iterable<Row>‘ can’t be assigned to the parameter type ‘List<Widget>‘.

flutter始めたばかりで1時間ほどタイトルのエラーではまりました

とりあえず結論

// ダメ
Container(
  height: min(widget.order.products.length * 20.0 + 10, 180),
  child: ListView(
    children: widget.order.products.map((prod) => Row()),
  ),
),

// OK
// RowにtoList()メソッド入れる
Container(
  height: min(widget.order.products.length * 20.0 + 10, 180),
  child: ListView(
    children: widget.order.products.map((prod) => Row()).toList(), 
  ),
),

なぜ発生していたか?

Rowのchildrenには、通常<Widget>[]が入っており、Widget型のリストが期待されています。

しかしmapではRow だけ返していて、List型に変換されていないことが問題でした。

なので、最後にtoList() メソッドを入れてあげることで、<Widget>[] に適した型となり、エラーを吐き出さないようになります。

参考記事

toList method


関連記事

copyright© 2016-2021 Masahiro Okubo