Advertisement · 728 × 90

Posts by Kabo

Post image

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

4 months ago 9 1 0 2

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 months ago 0 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 months ago 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...

10 months ago 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.

11 months ago 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...

11 months ago 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!

11 months ago 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.)

1 year ago 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.

1 year ago 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...

1 year ago 1 0 0 0
Advertisement
Post image
1 year ago 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.

1 year ago 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...

1 year ago 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.

1 year ago 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...

1 year ago 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.

1 year ago 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...

1 year ago 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.

1 year ago 2 0 0 0
Advertisement

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.

1 year ago 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.

1 year ago 4 1 1 0

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

1 year ago 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.

1 year ago 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.

1 year ago 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

1 year ago 0 0 1 0
Merry Christmas

Merry Christmas

1 year ago 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

1 year ago 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.

1 year ago 0 0 1 0
Advertisement

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?

1 year ago 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.

1 year ago 1 0 0 0

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

1 year ago 1 0 1 0