text_table 1.0.0 copy "text_table: ^1.0.0" to clipboard
text_table: ^1.0.0 copied to clipboard

outdatedDart 1 only

Renders style-able flex ascii tables.

text_table #

Renders style-able flex ascii tables.

Features #

  • ✅ Customizable table borders
  • ✅ Column width customization
  • ❌ Flex column widths
  • ✅ Cell text alignment
  • ❌ Cell padding
  • ✅ Text truncation and ellipsis

Usage #

Simple example #

main() {
    final Table tab = table(['Player', 'Team', 'Goals'],
        columnWidths: [fixed(25), fixed(25), fixed(10)])
      ..row(['Messi', 'Barcelona FC', 80])
      ..row(['Christiano Ronaldo', 'Real Madrid', 30])
      ..row(['Luiz Suarez', 'Barcelona FC', 50]);
    print(tab);
}
┌─────────────────────────┬─────────────────────────┬──────────┐
│Player                   │Team                     │Goals     │
┝━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━┥
│Messi                    │Barcelona FC             │80        │
├─────────────────────────┼─────────────────────────┼──────────┤
│Christiano Ronaldo       │Real Madrid              │30        │
├─────────────────────────┼─────────────────────────┼──────────┤
│Luiz Suarez              │Barcelona FC             │50        │
└─────────────────────────┴─────────────────────────┴──────────┘

Text alignment #

main() {
    final Table tab = table(['Player', 'Team', 'Goals'],
        columnWidths: [fixed(25), fixed(25), fixed(10)], align: Align.center)
      ..row(['Messi', 'Barcelona FC', 80])..row(
          ['Christiano Ronaldo', 'Real Madrid', 30])..row(
          ['Luiz Suarez', 'Barcelona FC', 50]);
    print(tab);
}
┌─────────────────────────┬─────────────────────────┬──────────┐
│         Player          │          Team           │  Goals   │
┝━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━┥
│          Messi          │      Barcelona FC       │    80    │
├─────────────────────────┼─────────────────────────┼──────────┤
│   Christiano Ronaldo    │       Real Madrid       │    30    │
├─────────────────────────┼─────────────────────────┼──────────┤
│       Luiz Suarez       │      Barcelona FC       │    50    │
└─────────────────────────┴─────────────────────────┴──────────┘

Column specific text alignment

main() {
    final Table tab = table(['Player', 'Team', 'Goals'],
        columnWidths: [fixed(25), fixed(25), fixed(10)],
        aligns: [Align.left, Align.center, Align.right])
      ..row(['Messi', 'Barcelona FC', 80])
      ..row(['Christiano Ronaldo', 'Real Madrid', 30])
      ..row(['Luiz Suarez', 'Barcelona FC', 50]);
    print(tab);
}
┌─────────────────────────┬─────────────────────────┬──────────┐
│Player                   │          Team           │     Goals│
┝━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━┥
│Messi                    │      Barcelona FC       │        80│
├─────────────────────────┼─────────────────────────┼──────────┤
│Christiano Ronaldo       │       Real Madrid       │        30│
├─────────────────────────┼─────────────────────────┼──────────┤
│Luiz Suarez              │      Barcelona FC       │        50│
└─────────────────────────┴─────────────────────────┴──────────┘

Border styles #

main() {
    final Table tab = table(
      ['Player', 'Team', 'Goals'],
      columnWidths: [fixed(25), fixed(25), fixed(10)],
      border: Border.doubleLines,
    )
      ..row(['Messi', 'Barcelona FC', 80])
      ..row(['Christiano Ronaldo', 'Real Madrid', 30])
      ..row(['Luiz Suarez', 'Barcelona FC', 50]);
    print(tab);
}
╔═════════════════════════╤═════════════════════════╤══════════╗
║Player                   │Team                     │Goals     ║
╠═════════════════════════╪═════════════════════════╪══════════╣
║Messi                    │Barcelona FC             │80        ║
╟─────────────────────────┼─────────────────────────┼──────────╢
║Christiano Ronaldo       │Real Madrid              │30        ║
╟─────────────────────────┼─────────────────────────┼──────────╢
║Luiz Suarez              │Barcelona FC             │50        ║
╚═════════════════════════╧═════════════════════════╧══════════╝

Supported style

TODO

No borders

main() {
    final Table tab = table(['Player', 'Team', 'Goals'],
        columnWidths: [fixed(25), fixed(25), fixed(10)], border: Border.compact)
      ..row(['Messi', 'Barcelona FC', 80])
      ..row(['Christiano Ronaldo', 'Real Madrid', 30])
      ..row(['Luiz Suarez', 'Barcelona FC', 50]);
    print(tab);
}
Player                   Team                     Goals     
----------------------------------------------------------------
Messi                    Barcelona FC             80        
Christiano Ronaldo       Real Madrid              30        
Luiz Suarez              Barcelona FC             50         

Padding #

TODO

Flex columns #

TODO

0
likes
15
points
14.2k
downloads

Publisher

unverified uploader

Weekly Downloads

Renders style-able flex ascii tables.

Repository (GitHub)

License

BSD-3-Clause (license)

More

Packages that depend on text_table