@@ -479,7 +479,7 @@ class ListNodeWidget extends StatelessWidget {
479479 @override
480480 Widget build (BuildContext context) {
481481 // TODO(#162): p+ul and p+ol interactions
482- final items = List .generate (node.items.length, (index) {
482+ final items = List < TableRow > .generate (node.items.length, (index) {
483483 final item = node.items[index];
484484 String marker;
485485 switch (node) {
@@ -493,34 +493,37 @@ class ListNodeWidget extends StatelessWidget {
493493 case UnorderedListNode (): marker = "• " ; break ;
494494 case OrderedListNode (: final start): marker = "${start + index }. " ; break ;
495495 }
496- return ListItemWidget ( marker: marker, nodes: item);
496+ return buildListItemRow (context : context, marker: marker, nodes: item);
497497 });
498498 return Padding (
499499 padding: const EdgeInsets .only (top: 2 , bottom: 5 ),
500- child: Column (children: items));
500+ child: Table (
501+ textBaseline: localizedTextBaseline (context),
502+ defaultVerticalAlignment: TableCellVerticalAlignment .baseline,
503+ columnWidths: const < int , TableColumnWidth > {
504+ 0 : IntrinsicColumnWidth (),
505+ 1 : FlexColumnWidth (),
506+ },
507+ children: items,
508+ ),
509+ );
501510 }
502511}
503512
504- class ListItemWidget extends StatelessWidget {
505- const ListItemWidget ({super .key, required this .marker, required this .nodes});
506-
507- final String marker;
508- final List <BlockContentNode > nodes;
509-
510- @override
511- Widget build (BuildContext context) {
512- return Row (
513- mainAxisAlignment: MainAxisAlignment .start,
514- crossAxisAlignment: CrossAxisAlignment .baseline,
515- textBaseline: localizedTextBaseline (context),
516- children: [
517- SizedBox (
518- width: 20 , // TODO handle long numbers in <ol>, like https://github.com/zulip/zulip/pull/25063
519- child: Align (
520- alignment: AlignmentDirectional .topEnd, child: Text (marker))),
521- Expanded (child: BlockContentList (nodes: nodes)),
522- ]);
523- }
513+ TableRow buildListItemRow ({
514+ required BuildContext context,
515+ required String marker,
516+ required List <BlockContentNode > nodes,
517+ }) {
518+ return TableRow (
519+ children: [
520+ Align (
521+ alignment: AlignmentDirectional .topEnd,
522+ child: Text (marker, textAlign: TextAlign .right),
523+ ),
524+ BlockContentList (nodes: nodes),
525+ ],
526+ );
524527}
525528
526529class Spoiler extends StatefulWidget {
0 commit comments