{"id":15555017,"url":"https://github.com/desktop-dart/text_table","last_synced_at":"2025-07-01T05:05:23.381Z","repository":{"id":59150029,"uuid":"116019823","full_name":"desktop-dart/text_table","owner":"desktop-dart","description":"Renders stylable flex ascii tables.","archived":false,"fork":false,"pushed_at":"2022-10-23T20:43:42.000Z","size":55,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T20:51:14.569Z","etag":null,"topics":["ascii","borderless","borders","dartlang","flex","flex-table","flexible","style","table","tableview","themable","theme"],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/desktop-dart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-02T13:48:59.000Z","updated_at":"2025-02-08T19:46:09.000Z","dependencies_parsed_at":"2022-09-13T10:50:15.887Z","dependency_job_id":null,"html_url":"https://github.com/desktop-dart/text_table","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/desktop-dart/text_table","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-dart%2Ftext_table","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-dart%2Ftext_table/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-dart%2Ftext_table/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-dart%2Ftext_table/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/desktop-dart","download_url":"https://codeload.github.com/desktop-dart/text_table/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-dart%2Ftext_table/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262900187,"owners_count":23381662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ascii","borderless","borders","dartlang","flex","flex-table","flexible","style","table","tableview","themable","theme"],"created_at":"2024-10-02T15:05:42.539Z","updated_at":"2025-07-01T05:05:23.345Z","avatar_url":"https://github.com/desktop-dart.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# text_table\n\nRenders style-able flex ascii tables.\n\n# Features\n\n+ Customizable table borders\n+ Multiline rows\n+ Column size control\n    + Min and max Column widths\n    + Flex column widths\n    + Percentage based column widths\n+ Cell text alignment\n+ Cell padding\n\n# TODO\n\n+ [ ] Merged cells\n+ [ ] Text truncation and ellipsis\n\n# Usage\n\n## Simple example\n\n```dart\nimport 'package:text_table/text_table.dart';\n\nmain() {\n  final tab = TableRenderer().render([\n    ['Messi', 'Barcelona FC', 80],\n    ['Christiano Ronaldo', 'Real Madrid', 30],\n    ['Luiz Suarez', 'Barcelona FC', 50]\n  ], columns: [\n    'Player',\n    'Team',\n    'Goals'\n  ]);\n  print(tab);\n}\n```\n\n```\n┌──────────────────┬────────────┬─────┐\n│      Player      │    Team    │Goals│\n┝━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━┿━━━━━┥\n│Messi             │Barcelona FC│80   │\n├──────────────────┼────────────┼─────┤\n│Christiano Ronaldo│Real Madrid │30   │\n├──────────────────┼────────────┼─────┤\n│Luiz Suarez       │Barcelona FC│50   │\n└──────────────────┴────────────┴─────┘\n```\n\n## Text alignment\n\n```dart\nfinal tab = TableRenderer().render([\n  ['Messi', 'Barcelona FC', 80],\n  ['Christiano Ronaldo', 'Real Madrid', 30],\n  ['Luiz Suarez', 'Barcelona FC', 50]\n], columns: [\n  ColSpec(name: 'Player', width: Fixed(25), align: Align.left),\n  ColSpec(name: 'Team', width: Fixed(25), align: Align.center),\n  ColSpec(name: 'Goals', width: Fixed(10), align: Align.right)\n]);\nprint(tab);\n```\n\n```\n┌─────────────────────────┬─────────────────────────┬──────────┐\n│         Player          │          Team           │  Goals   │\n┝━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━┥\n│Messi                    │      Barcelona FC       │        80│\n├─────────────────────────┼─────────────────────────┼──────────┤\n│Christiano Ronaldo       │       Real Madrid       │        30│\n├─────────────────────────┼─────────────────────────┼──────────┤\n│Luiz Suarez              │      Barcelona FC       │        50│\n└─────────────────────────┴─────────────────────────┴──────────┘\n```\n\n## Padding\n\n```dart\nimport 'package:text_table/text_table.dart';\n\nmain() {\n  final tab = TableRenderer(padding: Padding.same(1)).render([\n    ['Messi', 'Barcelona FC', 80],\n    ['Christiano Ronaldo', 'Real Madrid', 30],\n    ['Luiz Suarez', 'Barcelona FC', 50]\n  ], columns: [\n    'Player',\n    'Team',\n    ColSpec(name: 'Goals', padding: Padding.same(2)),\n  ]);\n  print(tab);\n}\n```\n\n```\n┌────────────────────┬──────────────┬─────────┐\n│       Player       │     Team     │  Goals  │\n┝━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━┥\n│ Messi              │ Barcelona FC │  80     │\n├────────────────────┼──────────────┼─────────┤\n│ Christiano Ronaldo │ Real Madrid  │  30     │\n├────────────────────┼──────────────┼─────────┤\n│ Luiz Suarez        │ Barcelona FC │  50     │\n└────────────────────┴──────────────┴─────────┘\n```\n\n## Flex columns\n\n```dart\nimport 'package:text_table/text_table.dart';\n\nmain() {\n  final tab = TableRenderer(padding: Padding.same(2)).render([\n    ['Messi', 'Barcelona FC', 80],\n    ['Christiano Ronaldo', 'Real Madrid', 30],\n    ['Luiz Suarez', 'Barcelona FC', 50]\n  ], columns: [\n    ColSpec(name: 'Player', width: Flex(2)),\n    ColSpec(name: 'Team', width: Flex(1), minWidth: Fixed(15)),\n    ColSpec(name: 'Goals', width: Flex(1), align: Align.right)\n  ], width: 50);\n  print(tab);\n}\n```\n\n```\n┌─────────────────┬───────────────────┬──────────┐\n│     Player      │       Team        │  Goals   │\n┝━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━┥\n│  Messi          │  Barcelona FC     │      80  │\n├─────────────────┼───────────────────┼──────────┤\n│  Christiano Ro  │  Real Madrid      │      30  │\n│  naldo          │                   │          │\n├─────────────────┼───────────────────┼──────────┤\n│  Luiz Suarez    │  Barcelona FC     │      50  │\n└─────────────────┴───────────────────┴──────────┘\n```\n\n## Customize border styles\n\nUse `border` field of `TableRenderer` to customize the border style of the table.\n\n### Double line\n\n```dart\nfinal tab = TableRenderer(border: Border.doubleLines)\n    .render(rows, columns: columns);\nprint(tab);\n```\n\n```\n╔══════════════════╤════════════╤═════╗\n║      Player      │    Team    │Goals║\n╠══════════════════╪════════════╪═════╣\n║Messi             │Barcelona FC│80   ║\n╟──────────────────┼────────────┼─────╢\n║Christiano Ronaldo│Real Madrid │30   ║\n╟──────────────────┼────────────┼─────╢\n║Luiz Suarez       │Barcelona FC│50   ║\n╚══════════════════╧════════════╧═════╝\n```\n\n### Compact\n\n```dart\nfinal tab =\n  TableRenderer(border: Border.compact).render(rows, columns: columns);\nprint(tab);\n```\n\n```\n      Player           Team     Goals\n-------------------------------------\nMessi              Barcelona FC 80   \nChristiano Ronaldo Real Madrid  30   \nLuiz Suarez        Barcelona FC 50    \n```\n\n### Rounded corners\n\n```dart\nfinal tab =\n  TableRenderer(border: Border.round).render(rows, columns: columns);\nprint(tab);\n```\n\n```\n╭──────────────────┬────────────┬─────╮\n│      Player      │    Team    │Goals│\n┝━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━┿━━━━━┥\n│Messi             │Barcelona FC│80   │\n├──────────────────┼────────────┼─────┤\n│Christiano Ronaldo│Real Madrid │30   │\n├──────────────────┼────────────┼─────┤\n│Luiz Suarez       │Barcelona FC│50   │\n╰──────────────────┴────────────┴─────╯\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesktop-dart%2Ftext_table","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdesktop-dart%2Ftext_table","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesktop-dart%2Ftext_table/lists"}