Skip to content

Commit a04f584

Browse files
committed
content: Handle long numbers in <ol>
1 parent 348edbc commit a04f584

File tree

1 file changed

+26
-23
lines changed

1 file changed

+26
-23
lines changed

lib/widgets/content.dart

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

526529
class Spoiler extends StatefulWidget {

0 commit comments

Comments
 (0)