Sign in

Kabo

@kaboc.bsky.social
337 followers 132 following 81 posts

App Developer Dart/Flutter, Go, SQL, PocketBase github.com/kaboc kaboc.cc

PostsRepliesMedia
Reposted by Kabo
Fly.io @fly.io · 12/12/2025
🚀 Just dropped: Litestream VFS. Query SQLite databases directly from S3 with zero download penalty. It uses HTTP range headers for lazy fetching and LTX for compaction, enabling instant startup even for large databases. 🔗 ➡️ fly.io/blog/litestr...
0101
Kabo @kaboc.bsky.social · 10/06/2025
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.
100
Kabo @kaboc.bsky.social · 22/05/2025
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...
github.com
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...
140
Kabo @kaboc.bsky.social · 22/05/2025
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!
000
Kabo @kaboc.bsky.social · 21/03/2025
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.
010
Kabo @kaboc.bsky.social · 20/03/2025
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.tech
Turso Cloud Debuts the New Developer Plan
A new developer plan that offers more generous allowances and a lower price than the Hobby plan.
000
Kabo @kaboc.bsky.social · 14/03/2025
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.
000
Kabo @kaboc.bsky.social · 12/03/2025
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...
sqlite.org
Many Small Queries Are Efficient In SQLite
000
Kabo @kaboc.bsky.social · 10/02/2025
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.
000
Kabo @kaboc.bsky.social · 22/01/2025
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...
turso.tech
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
000
Kabo @kaboc.bsky.social · 13/01/2025
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.
020
Kabo @kaboc.bsky.social · 11/01/2025
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.
141
Kabo @kaboc.bsky.social · 28/12/2024
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.
110
Kabo @kaboc.bsky.social · 27/12/2024
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
100
Kabo @kaboc.bsky.social · 25/12/2024
Merry Christmas
000
Kabo @kaboc.bsky.social · 24/12/2024
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.
100
Kabo @kaboc.bsky.social · 23/12/2024
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?
000
Kabo @kaboc.bsky.social · 20/12/2024
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.
100
Kabo @kaboc.bsky.social · 18/12/2024
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...
suragch.medium.com
Font Features in Flutter
A little extra help for styling your text
010
Kabo @kaboc.bsky.social · 18/12/2024
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.
020
Kabo @kaboc.bsky.social · 12/12/2024
Pocketbase Just Got An SQL Upgrade youtu.be/KOk_Tw8qZYQ?...
youtu.be
Pocketbase Just Got An SQL Upgrade
YouTube video by Early Morning Dev
020
Reposted by Kabo
Josh Burton @josh.app · 12/12/2024
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.
141
Kabo @kaboc.bsky.social · 05/12/2024
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.
pub.dev
google_adsense | Flutter package
A wrapper plugin with convenience APIs allowing easier inserting Google Adsense HTML snippets withing a Flutter UI Web application
020
Kabo @kaboc.bsky.social · 04/12/2024
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!
110
Kabo @kaboc.bsky.social · 04/12/2024
Flutter automatically flips (most of) the UI horizontally including icons in RTL locales. But is this really correct?
100
Kabo @kaboc.bsky.social · 03/12/2024
Noticed another one is up. Architecture case study docs.flutter.dev/app-architec...
docs.flutter.dev
Architecture case study
A walk-through of a Flutter app that implements the MVVM design pattern.
130
Kabo @kaboc.bsky.social · 02/12/2024
Keeping a tooltip open is possible with TooltipTriggerMode.manual + GestureDetector + TooltipState.ensureTooltipVisible() in Flutter, but a tap on the Tooltip child reopens the tooltip instead of closing it. As a workaround, I had to use Tooltip.dismissAllToolTips() to get the visibility status.
The visibility status (_visible) of a tooltip is private. As a workaround, I had to use Tooltip.dismissAllTooltips() to get the status. The method is actually not for getting the status, so using it is a bit hacky. The API of the Tooltip widget is weird IMO.
020
Kabo @kaboc.bsky.social · 26/11/2024
It's kind of fun to try opening mobile apps offline and see what happens. X and Mastodon show cached data, and oh, BlueSky... I don't think all kinds of apps should support offline use, but it's definitely bad that an app surprises already logged in users by showing the login page.
050
Kabo @kaboc.bsky.social · 25/11/2024
Wondering why the current state getter added to go_router several weeks ago returns a nullable type. Neither currentConfiguration, last or buildState() is nullable.
010
Kabo @kaboc.bsky.social · 25/11/2024
PocketBase v0.23.0 github.com/pocketbase/p... It is incredible that the author completed so many awesome improvements after announcing the plan nine months ago.
github.com
Release v0.23.0 Release · pocketbase/pocketbase
NoteYou don't have to upgrade to PocketBase v0.23.0 if you are not planning further developing your existing app and/or are satisfied with the v0.22.x features set. There are no identified critical...
1131
Kabo @kaboc.bsky.social · 23/11/2024
I didn't know this either. That's easier than what I usually did, like running "flutter build web" and then starting a server with dhttpd.
121
Kabo @kaboc.bsky.social · 22/11/2024
Is enableFeedback existing in various widgets really working? For example, it is enabled by default in InkWell, but I've never seen it behave as the property name implies. There's no feedback on any of my Android phones. Does it require any special setting?
000
Kabo @kaboc.bsky.social · 21/11/2024
This would be much longer code if the language doesn't have pattern matching, collection-for/if and the spread operator. Dart is so powerful these days.
140
Kabo @kaboc.bsky.social · 20/11/2024
Generics in Dart is great (I mean, it's good enough), but it is confusing sometimes.
100
Kabo @kaboc.bsky.social · 20/11/2024
> hope to send out something in the next month or so. Definitely < 6 months 😁 stay tuned. github.com/dart-lang/sd... This is one of the things I've been looking forward to about Dart. It's great it is likely to come sooner than I expected.
github.com
☂️ New analyzer plugin system · Issue #53402 · dart-lang/sdk
Tasks needed to deliver a new analyzer plugin system: Tech preview Document requirements. Public doc available Design overall system. Public doc available Design plugin API. Public doc available Pr...
000
Kabo @kaboc.bsky.social · 18/11/2024
Architecting Flutter apps docs.flutter.dev/app-architec...
docs.flutter.dev
Architecting Flutter apps
Learn how to structure Flutter apps.
1153
Kabo @kaboc.bsky.social · 11/11/2024
It was not as hard as I was thinking to implement a feature to swipe down to close an image, which can also be zoomed and panned. It was achieved with only a little over 100 LOC. One of the things I think is nice is a movement by a pull is slowed down if the distance is enough to close the view.
000
Reposted by Kabo
Mike @rydmike.com · 10/11/2024
The new #FlutterDev way to define WidgetState properties using .fromMap instead of the confusing callbacks are much easier to read and use, plus they allow ThemeData with component themes that use WidgetState properties to again have deep object equality ⬇️ 1/2
1153
Kabo @kaboc.bsky.social · 09/11/2024
Noticed the file stored with cached_network_image was not deleted, while its data was successfully removed from a JSON file.
100
Kabo @kaboc.bsky.social · 07/11/2024
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
pub.dev
custom_text | Flutter package
Highly customisable text widget and controller to enable styling and gesture actions.
140
Kabo @kaboc.bsky.social · 05/11/2024
ListView automatically avoids its scroll ends covering outside the safe area, while other scrollable widgets (probably) don't. It's a bit confusing in an app that supports edge-to-edge. I have to decide whether to add a bottom padding manually depending on the widget.
200
Kabo @kaboc.bsky.social · 04/11/2024
TIL: minBy() and maxBy() from package:collection forum.itsallwidgets.com/t/lesser-kno...
forum.itsallwidgets.com
Lesser known classes and functions from the Dart core libraries
I noticed how, even after a decade of using Dart, I still occasionally find functionality in the standard library that’s either new to me, or long forgotten. I’d like to invite you folks to share your...
000
Kabo @kaboc.bsky.social · 16/05/2024
JsonCodable has just appeared in Dart and it is still experimental, so why don't we take this opportunity to change the naming convention of conversions between an object and a map? fromMap/toMap would be more appropriate than fromJson/toJson.
000
Kabo @kaboc.bsky.social · 19/04/2024
While the disabled colour of NavigationBar is configureable, that of NavigationRail is always onSurface.withOpacity(0.38). And when a widget doesn't have the configuration, I expect ThemeData.disabledColor to be used, but that's not the case. Why is Flutter so inconsistent?
000
Kabo @kaboc.bsky.social · 13/04/2024
I was wondering for a while how to convert a translucent colour to an identical-looking opaque colour in Dart, and then suddenly realised it was just a matter of using Color.alphaBrend. Would be handy to have a wrapper method that works appropriately with both light and dark modes.
000
Kabo @kaboc.bsky.social · 28/02/2024
custom_text - text widget package to make your app more expressive : r/FlutterDev www.reddit.com/r/FlutterDev...
reddit.com
Reddit - Dive into anything
Reddit and its partners use cookies and similar technologies to provide you with a better experience.
000
Kabo @kaboc.bsky.social · 27/02/2024
Inside onPopInvoked - pop() should be called only when false is passed in, otherwise it leads to a strange behaviour (at least on Android emulator on my PC) - maybePop() causes an infinate loop
000
Kabo @kaboc.bsky.social · 27/02/2024
Without onPopInvoked - Cannot go back unless pop() is used - maybePop() does nothing (note: back button in AppBar uses maybePop) With onPopInvoked - pop() navigates back and calls onPopInvoked with `true` - maybePop() calls onPopInvoked with `false` without navigating
000
Kabo @kaboc.bsky.social · 27/02/2024
PopScope is confusing. Here is a note for future reference (only for use with Navigator API) Back gesture - iOS: Gesture itself is disabled, so onPopInvoked is not called - Android: onPopInvoked is called with false, but not when gesture is cancelled api.flutter.dev/flutter/widg...
api.flutter.dev
PopScope class - widgets library - Dart API
API docs for the PopScope class from the widgets library, for the Dart programming language.
000
Kabo @kaboc.bsky.social · 23/02/2024
Is animated GIF not supported here?
000