Kabo
banner
kaboc.bsky.social
Kabo
@kaboc.bsky.social
App Developer
Dart/Flutter, Go, SQL, PocketBase

https://github.com/kaboc
https://kaboc.cc/
Pinned
custom_text
A package that makes text on your app look and feel better.
pub.dev/packages/cus...

👉 Highlighting or linkifying parts of text
👉 Changing text styles and pointer type on hover (good for web)
👉 Obtaining tap/hover position
👉 Some of those features are also available in text field
custom_text | Flutter package
Highly customisable text widget and controller to enable styling and gesture actions.
pub.dev
I'm curious about the min window size allowed in iPadOS 26's multi-window system. Some of my apps are responsive and look good at 100x100, but likely overflow at 50x50.
June 10, 2025 at 2:49 PM
I'm still on Flutter 3.24.5, which I believe was the last truely stable version. When will critical bugs in 3.27 and 3.29 be fixed? Even then, these versions won't receive backports, so for me, they'll essentially remain untouched forever.

E.g.
github.com/flutter/flut...
github.com/flutter/flut...
Flutter 3.27.x | Android 10, 11 | Crash: "drawRenderNode called on a context with no surface!" · Issue #162147 · flutter/flutter
Steps to reproduce Issue Summary: Our app uses multiple screens with WebView (flutter_inappwebview). After upgrading Flutter from version 3.24.4 to 3.27.1 to address this issue on iOS 18.2, we star...
github.com
May 22, 2025 at 8:16 AM
Finally solved the Go dependency issue I'd been battling in IntelliJ IDEA for months. It turns out a permission error related to the env file in GOROOT – which should have been a file – had somehow been replaced with a directory of the same name. So bizarre!
May 22, 2025 at 7:54 AM
I struggled a bit to find out how to scroll to an element smoothly with scrollIntoView() in a website made with Jaspr. Its argument needs to be JSAny, but js_interop doesn't (apparently) have a method to convert a Dart Map to JSObject. Evetually turned out jsify() was the one.
March 21, 2025 at 3:03 AM
Considered Turso and skipped it recently, but wanna think about using it in the future. I guess it is now one of the most affordable cloud relational database services. Only $4.99 (or 5.99) /month for 1,000 databases and 2.5 billion monthly rows read.
turso.tech/blog/turso-c...
Turso Cloud Debuts the New Developer Plan
A new developer plan that offers more generous allowances and a lower price than the Hobby plan.
turso.tech
March 20, 2025 at 2:21 AM
Scrolling obviously stutters in my app. Seems the cost of creating widgets is higher than the benefit of lazy creation in SliverList. Using Column makes it smoother, but the initial build is probably more costly. I wonder whether to fix the cause now. It isn't that noticeable in profile mode.
March 14, 2025 at 11:56 AM
I had been a little skeptical that running a lot of queries consecutively wouldn't be a problem in SQLite (and actually haven't measured the performance), but found the document had a dedicated page about it. It says even N+1 Queries are fine.
www.sqlite.org/np1queryprob...
Many Small Queries Are Efficient In SQLite
www.sqlite.org
March 12, 2025 at 5:41 AM
Asked an AI about things to be cautious about when using the WAL mode in SQLite on a mobile app. I didn't know WAL might not work on an SD card. I'm lucky I'm using Drift for DB operations but also using sqflite's getDatabasesPath() together to get `data/data/xxxx/databases/`, which isn't in SD.
February 10, 2025 at 4:24 PM
So Turso will allow us to create up to 500 databases with 1-day PITR and no cold starts for free, or with 10-day PITR, 3-day audit logs and no archiving for only $4.99 (down from $9). Sounds very affordable and nice!
turso.tech/blog/upcomin...
Upcoming changes to the Turso Platform and Roadmap
With a renewed focused on the rewrite of SQLite, we will make some changes to our offering
turso.tech
January 22, 2025 at 5:13 AM
I saw this post just the right time when I was struggling to access ‛window.navigator.language‛ using package:web on a static site created with Jaspr, only to get an incompatibily error. The universal_web package (used together with kIsWeb) solved the issue.
New 'universal_web' package adds platform compatibility to 'web' package:

This wraps the 'web' package and provides stubs for non-web platforms, which makes it directly importable in all environments. No more conditional imports.
Used by Jaspr for all web interactions.

pub.dev/packages/uni...
universal_web | Dart package
Wrapper around package:web that adds compatibility for non-web environments.
pub.dev
January 13, 2025 at 8:17 AM
Started to migrate my developer website from Svelte to Jaspr. The experience is much better than when I created part of my blog site with it 2.5 years ago. It's impressive that even styling is possible via Dart, which was not possible before IIRC.
January 11, 2025 at 2:16 PM
Didn't know I can use the the use-named-parameters flag in l10n.yaml. According to the change log, it's been available since Flutter 3.19.
December 28, 2024 at 2:59 PM
I was looking for a long time for a way to remove granted entitlements on RevenueCat dashboard, and I realised just yesterday that I had to uncheck the "Sandbox data".

1. Customers > Sandbox
2. Choose a customer from the list
3. Uncheck the checkbox at the top right
December 27, 2024 at 11:05 AM
December 25, 2024 at 10:18 AM
Drift stores a date and time as an epoch time in seconds by default. To change the precision to milliseconds, it is necessary to either (a) use IntColumn + a converter instead of DateTimeColumn, or (b) configure to store DateTime as a string. Both have pitfalls. Wish it was easier.
December 24, 2024 at 11:57 AM
Logging in is not required in my app, but it is necessary if a user has purchased a subscription at the Play Store and wanna enable it on iOS without re-purchasing at the App Store. Will the app be rejected if I describe the flow for users and Apple notices it?
December 23, 2024 at 6:13 AM
Topics of a package seem to affect the order of search results on pub.dev. I recently added "rich-text", "link" and some more topics to one of my packages, which had had only "text" before. A search by "rich text" or "link" now shows the package in the first or second page.
December 20, 2024 at 5:27 AM
Learned `FontFeature.tabularFigures()` (or `FontFeature.enable('tnum')`) as well as other font features from this article several years ago.
suragch.medium.com/font-feature...

The page now asks me to create an account. This is why I don't like Medium...
December 18, 2024 at 8:42 AM
IntrinsicHeight sometimes doesn't align the height of children of a Row (dunno why). CustomMultiChildLayout is another option, but cannot be used if the Row height is unbounded. So I created a custom RenderFlex as a last resort. IMO, this should be possible out of the box in #FlutterDev.
December 18, 2024 at 8:31 AM
Pocketbase Just Got An SQL Upgrade youtu.be/KOk_Tw8qZYQ?...
Pocketbase Just Got An SQL Upgrade
YouTube video by Early Morning Dev
youtu.be
December 12, 2024 at 10:39 AM
Reposted by Kabo
Well I'll be reverting that change.

When using workspaces all of the workspaces in the project seem to be bundled with the app, even if not referenced by the app pubspec.

Surely that's a bug.
December 12, 2024 at 3:51 AM
google_adsense 0.0.1
Google AdSense plugin for Flutter Web
pub.dev/packages/goo...

Looks nice as a new way to monetize web sites/apps created with Flutter.
google_adsense | Flutter package
A wrapper plugin with convenience APIs allowing easier inserting Google Adsense HTML snippets withing a Flutter UI Web application
pub.dev
December 5, 2024 at 11:54 AM
TIL: Everything is flipped in RTL (or at least in Persian), more thoroughly than I thought. Even the question mark is not an exception. It feels to me as if they live in a mirror. How interesting!
Yes. In Persian, that’s the question mark: ؟
December 4, 2024 at 3:35 PM
Flutter automatically flips (most of) the UI horizontally including icons in RTL locales. But is this really correct?
December 4, 2024 at 2:49 PM
Noticed another one is up.

Architecture case study
docs.flutter.dev/app-architec...
December 3, 2024 at 12:15 PM