Senior Mobile Developer — Flutter and Kotlin. Wrocław, Poland. Working B2B through Bartosz Wróbel IT.
Writing software since 2008, mobile since 2010. Alongside the products, I build the tools that shorten the road from a design to a working screen: generators, scroll-layer libraries, design-token pipelines.
Stack: Flutter · Dart · Kotlin · Jetpack Compose · Kotlin Multiplatform · Ktor · PostgreSQL · TypeScript / React
Verified publisher bomsamdi.com — twelve packages, MIT, every one at 160/160 on pub.dev's analysis, all refreshed for Flutter 3.32 / Dart 3.8.
| package | what it does |
|---|---|
| auto_scroll_text | single-line text that scrolls itself when it does not fit, instead of being cut off |
| sliver_text | Text as a sliver: a custom RenderSliver, rich text, selection, semantics, gradient fill |
| dtcg_theme | W3C design tokens to a type-safe Flutter theme, with WCAG contrast checked at build time |
| reflection_class | read, write, call and serialise members by name where Flutter has no dart:mirrors — no codegen, no dependencies |
The same problems, solved with Compose's own primitives rather than ported.
| repository | what it does |
|---|---|
| section_tabs | a tab bar bound to the sections of a LazyColumn — scroll and the tab follows, tap and the list goes there. Compose ships neither half |
| top_sheet | a modal sheet from the top. Material3 has ModalBottomSheet and nothing that arrives from above |
| explode_compose | shatters any composable into fragments of its own pixels — one graphics-layer readback, draw phase only, zero recomposition |
Every one of these was verified by running it, not by reading it: a browser
driven over the DevTools protocol for the Flutter packages, an emulator and
dumpsys gfxinfo for the Compose ones. That is how the interesting bugs turned
up — a decompression-bomb limit, a 1 << 32 that is zero in JavaScript, a
viewport offset that is negative under content padding, and the reason
explode_compose defaults to 240 fragments where its Flutter sibling defaults
to 600: Android's public Canvas has no drawAtlas, and the frame times say so.