Kabo's Avatar

Kabo

@kaboc.bsky.social

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

322 Followers  |  130 Following  |  81 Posts  |  Joined: 21.12.2023  |  2.1508

Latest posts by kaboc.bsky.social on Bluesky

iOS and iPad used to have a limited variety of screen sizes. It was a developer- and designer-friendly advantage over Android. Is that not as true anymore?

10.06.2025 14:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

10.06.2025 14:48 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
TextDecoration doesn't inherit text color in Material3 Β· Issue #129553 Β· flutter/flutter Is there an existing issue for this? I have searched the existing issues I have read the guide to filing a bug Steps to reproduce Create a new Flutter app and set useMaterial3 to true Create a text...

I think it happens on 3.24 as well, unless you set ThemeData.useMaterial3 to true.

It's kind of funny they tried to fix the bug but decided not to merge it because it would introduce a breaking change, despite the fact that the bug itself already introduced one.
github.com/flutter/flut...

30.05.2025 08:17 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

My point is, I'd rather see stable versions released less frequently than the current rush to release unstable versions to meet events or quarterly cycles.

22.05.2025 08:33 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
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...

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...

22.05.2025 08:16 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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!

22.05.2025 07:54 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Sadly, just introducing a HoverGestureRecognizer wouldn't make it easier. TextSpan already has onEnter/onExit, with which changing a colour on hover is still hard. Hope it will become as easy as it is with CSS, someday without a third-party package. (I think so as an author of a related package.)

11.04.2025 16:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Link(
  uri: uri,
  target: LinkTarget.blank,
  builder: (context, followLink) => MouseRegion(
    cursor: SystemMouseCursors.click,
    child: GestureDetector(
      onTap: followLink,
      child: Text(
        '$uri',
        style: TextStyle(
          color: Theme.of(context).colorScheme.primary,
          decoration: TextDecoration.underline,
          decorationColor: Theme.of(context).colorScheme.primary,
        ),
        overflow: overflow,
        maxLines: maxLines,
      ),
    ),
  ),
)

Link( uri: uri, target: LinkTarget.blank, builder: (context, followLink) => MouseRegion( cursor: SystemMouseCursors.click, child: GestureDetector( onTap: followLink, child: Text( '$uri', style: TextStyle( color: Theme.of(context).colorScheme.primary, decoration: TextDecoration.underline, decorationColor: Theme.of(context).colorScheme.primary, ), overflow: overflow, maxLines: maxLines, ), ), ), )

An even better/easier way is to use GestureDetector instead of TextSpan + TapGestureRecognizer when there is no specific reason to use TextSpan. This way, you can avoid thinking about how you dispose the recognizer.

11.04.2025 15:30 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Link class - link library - Dart API API docs for the Link class from the link library, for the Dart programming language.

Just FYI, the Link widget is usually better on the web.

> A widget that renders a real link on the web
pub.dev/documentatio...

10.04.2025 09:53 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image 03.04.2025 14:45 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

21.03.2025 03:03 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Turso Cloud Debuts the New Developer Plan A new developer plan that offers more generous allowances and a lower price than the Hobby plan.

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...

20.03.2025 02:21 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

14.03.2025 11:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Many Small Queries Are Efficient In SQLite

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...

12.03.2025 05:41 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

10.02.2025 16:23 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
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

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...

22.01.2025 05:12 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

13.01.2025 08:17 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yeah it would be better to stick to the web tech you're already use to. For me, who is not a web person, Jaspr feels straightforward as it is really similar to Flutter, and I don't find it really verbose. Notations used instead of HTML are more concise than they used to be.

11.01.2025 15:19 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

11.01.2025 14:16 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

Do you mean the usage? It's as easy as adding `use-named-parameters: true` to l10n.yaml.

28.12.2024 15:12 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

28.12.2024 14:59 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The UI is so unfriendly. The list shows the customer with the "promo" status, but the next page doesn't show promo entitlements. It is also a weird flow that I need to enter the sandbox page and then uncheck the sandbox checkbox.

27.12.2024 11:05 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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

27.12.2024 11:05 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Merry Christmas

Merry Christmas

25.12.2024 10:17 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Some pitfalls:

a
- The converter is not used for placeholder variables
- Not warned about a wrong type there

b
- DateTime string contains microseconds. Comparing a value in a column with a millisec timestamp can lead to a bug
- QueryRow has DateTimes in UTC, while DataClass has them in local time

24.12.2024 11:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

24.12.2024 11:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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?

23.12.2024 06:13 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yeah, Google and the likes often show better results, and so I usually do the same as you. But I guess most people probably go to pub.dev first. I hope its search engine will be improved.

20.12.2024 09:37 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

But it doesn't appear early in the results with slighly different keywords like "richtext", "links" and "linkify".

20.12.2024 05:48 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

20.12.2024 05:27 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@kaboc is following 18 prominent accounts