type 'List<Widget?>' is not a subtype of type 'List<Widget>' in type cast


After running dart migrate & applying null safety, that error popped up at my code and I think that’s the error causing code block.

LayoutBuilder(builder: (context, cons) {
  return GestureDetector(
    child: new Stack(
      children: <Widget?>[
        // list of different widgets 
      ].where((child) => child != null).toList(growable: true) as List<Widget>,

The error message says:

The following _CastError was thrown building LayoutBuilder:
type 'List<Widget?>' is not a subtype of type 'List<Widget>' in type cast

The relevant error-causing widget was

If anyone encountered this issue, how it can be solved?


You cannot use as to cast List<T?> to List<T> because they are not directly related types; you would need to cast the elements instead, using List<Widget>.from() or Iterable.cast<Widget>().

See Dart convert List<String?> to List nnbd for how to remove null elements from a List<T?> and get a List<T> result (and thus avoiding the need to cast later).

Answered By – jamesdlin

Answer Checked By – Marie Seifert (FlutterFixes Admin)

Leave a Reply

Your email address will not be published.