tom_flutter_ui_test
A demonstration and test application exercising the tom_flutter_ui widget library and its resource parameters.
Overview
From the module readme.md file:
What it enables
No downstream modules declared yet.
Relationships
Standalone β no declared relationships.
tom_flutter_ui_test
A Flutter demo / smoke-test application for the Tom Flutter UI library (tom_flutter_ui). It is an internal harness β
publish_to: none β that exercises every part of the library against the live Flutter engine: the Advanced Container Layout (ACL) engine, the Tom-wrapped Material/Cupertino widget set, the form framework, and the resource / authorization machinery driven by
tom_core_kernel.
What it demonstrates
The app is a four-tab MaterialApp (see lib/main.dart). Each tab is a list of
DemoTiles that open a single full-screen demo:
| Tab | Source | What it shows |
|---|---|---|
| ACL Demos | lib/acl_demos/ |
The Advanced Container Layout engine: rows, alignment, expand flags, spacing, min/preferred/max sizing, character-width sizing, reference & cross-row constraints, titled/bordered groups, nested containers, responsive shrink/grow, row breakpoints, and the fluent
AclBuilder
API.
|
| Widget Demos | lib/widget_demos/ |
27 widget showcases grouped into Input & Actions, Layout & Structure, Display & Info, Advanced, and Scope & Architecture β the Tom wrappers over buttons, inputs, selection, toggles, sliders, cards, tables, navigation, slivers, animation, effects, plus resource resolution and scoped element providers. |
| Forms/Actions | lib/forms_demos/ |
The Tom form framework:
TomForm
field types with validation, selection/boolean variants over a shared
TomSelectableSource
,
TomFormStyleScope
breakpoint overrides, and complex action/authorization gating.
|
| Authorization/Resources | lib/widget_demos/demo_21β¦, demo_28β¦ |
Resource resolution (labels/icons/tooltips by
tomId
) and widget authorization (visibility, readonly,
TomUIGroup
).
|
Running it
flutter pub get
flutter run # pick a device/emulator
There is no code-generation step β unlike the sibling tom_flutter_form_test, this app does not use reflection generation and has no runtime asset bundle. Demo resources (text, icons, colors) are registered entirely in Dart by
initializeDemoResources() (lib/demo_resources.dart), which main()
calls before runApp so the first frame resolves every widget's labels, icons and colors. The persisted UI language is loaded by
LocaleSettingsService (lib/locale_settings.dart) before the first frame and can be changed live from the
AppBar language selector.
Tests
flutter test # default gate (serial; never run in parallel)
flutter test test/screenshots.dart # on-demand visual-capture harness (not a gate)
test/screenshots.dart is a manual "rerun and diff the PNGs" tool, deliberately excluded from the default gate (no
_test.dart suffix). The remaining *_test.dart files (widget_test.dart,
debug_form_test.dart, debug_heights_test.dart, debug_shrink_test.dart) are the automated suite.
Project layout
| Path | Purpose |
|---|---|
lib/main.dart |
Entry point, bootstrap ordering, and the four-tab registry. |
lib/demo_resources.dart |
Registers the text/icon/color resource adapters consumed by the demos. |
lib/locale_settings.dart |
Persisted-locale service + AppBar language selector. |
lib/acl_demos/ | ACL-engine demos and their scaffolding helpers. |
lib/widget_demos/ |
Per-category widget demos (demo_01β¦demo_28). |
lib/forms_demos/ | Form-framework demos. |
lib/common/ | Shared DemoTile / DemoScaffold. |
doc/ |
demo_catalogue.md
(navigation map of every demo) plus developer notes on widget resource parameters and discovery.
|
test/ | Automated widget suite plus the on-demand screenshot harness. |
Dependencies
tom_flutter_uiβ the library under test (path dependency).tom_core_kernelβ observables, resources, reflection, security.flutter_localizations,shared_preferences,cupertino_icons.
License
Copyright (c) 2024-2026 Peter Nicolai Alexis Kyaw. All rights reserved. This code is proprietary and confidential. Unauthorized copying, modification, distribution, or use of this software, via any medium, is strictly prohibited. For licensing inquiries, find me on LinkedIn under "Alexis Kyaw".