@@ -266,44 +266,33 @@ class BlockContentList extends StatelessWidget {
266
266
Widget build (BuildContext context) {
267
267
return Column (crossAxisAlignment: CrossAxisAlignment .stretch, children: [
268
268
...nodes.map ((node) {
269
- if (node is LineBreakNode ) {
270
- // This goes in a Column. So to get the effect of a newline,
271
- // just use an empty Text.
272
- return const Text ('' );
273
- } else if (node is ThematicBreakNode ) {
274
- return const ThematicBreak ();
275
- } else if (node is ParagraphNode ) {
276
- return Paragraph (node: node);
277
- } else if (node is HeadingNode ) {
278
- return Heading (node: node);
279
- } else if (node is QuotationNode ) {
280
- return Quotation (node: node);
281
- } else if (node is ListNode ) {
282
- return ListNodeWidget (node: node);
283
- } else if (node is SpoilerNode ) {
284
- return Spoiler (node: node);
285
- } else if (node is CodeBlockNode ) {
286
- return CodeBlock (node: node);
287
- } else if (node is MathBlockNode ) {
288
- return MathBlock (node: node);
289
- } else if (node is ImageNodeList ) {
290
- return MessageImageList (node: node);
291
- } else if (node is ImageNode ) {
292
- assert (false ,
293
- "[ImageNode] not allowed in [BlockContentList]. "
294
- "It should be wrapped in [ImageNodeList]."
295
- );
296
- return MessageImage (node: node);
297
- } else if (node is InlineVideoNode ) {
298
- return MessageInlineVideo (node: node);
299
- } else if (node is EmbedVideoNode ) {
300
- return MessageEmbedVideo (node: node);
301
- } else if (node is UnimplementedBlockContentNode ) {
302
- return Text .rich (_errorUnimplemented (node, context: context));
303
- } else {
304
- // TODO(dart-3): Use a sealed class / pattern-matching to exclude this.
305
- throw Exception ("impossible BlockContentNode: ${node .debugHtmlText }" );
306
- }
269
+ return switch (node) {
270
+ LineBreakNode () =>
271
+ // This goes in a Column. So to get the effect of a newline,
272
+ // just use an empty Text.
273
+ const Text ('' ),
274
+ ThematicBreakNode () => const ThematicBreak (),
275
+ ParagraphNode () => Paragraph (node: node),
276
+ HeadingNode () => Heading (node: node),
277
+ QuotationNode () => Quotation (node: node),
278
+ ListNode () => ListNodeWidget (node: node),
279
+ SpoilerNode () => Spoiler (node: node),
280
+ CodeBlockNode () => CodeBlock (node: node),
281
+ MathBlockNode () => MathBlock (node: node),
282
+ ImageNodeList () => MessageImageList (node: node),
283
+ ImageNode () => (){
284
+ assert (false ,
285
+ "[ImageNode] not allowed in [BlockContentList]. "
286
+ "It should be wrapped in [ImageNodeList]."
287
+ );
288
+ return MessageImage (node: node);
289
+ }(),
290
+ InlineVideoNode () => MessageInlineVideo (node: node),
291
+ EmbedVideoNode () => MessageEmbedVideo (node: node),
292
+ UnimplementedBlockContentNode () =>
293
+ Text .rich (_errorUnimplemented (node, context: context)),
294
+ };
295
+
307
296
}),
308
297
]);
309
298
}
0 commit comments