[analyzer] Handle NullAwareElements in Flutter outlines

Part of https://github.com/dart-lang/sdk/issues/56989

Change-Id: I32557d994d16b97b8f3b40bb3d654a657338b83e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/411020
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
diff --git a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
index a9de2ea..a82421d 100644
--- a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
+++ b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
@@ -170,6 +170,8 @@
             // Ignored. It's possible that we might be able to extract
             // some information from some spread expressions, but it seems
             // unlikely enough that we're not handling it at the moment.
+          } else if (element is NullAwareElement) {
+            addChildrenFrom(element.value);
           }
         }
 
diff --git a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
index d4bb23b..07f77b5 100644
--- a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
+++ b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
@@ -355,6 +355,30 @@
 ''');
   }
 
+  Future<void> test_children_withNullAwareElements() async {
+    var unitOutline = await _computeOutline('''
+import 'package:flutter/widgets.dart';
+
+class MyWidget extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return new Column(children: [
+      const Text('aaa'),
+      ?const Text('bbb'),
+    ]);
+  }
+}
+''');
+
+    expect(_toText(unitOutline), r'''
+(D) MyWidget
+  (D) build
+    Column
+      Text
+      Text
+''');
+  }
+
   Future<void> test_codeOffsetLength() async {
     var unitOutline = await _computeOutline('''
 import 'package:flutter/widgets.dart';