Comments (4)
Can you provide a full sample that demonstrates the issue rather than just snippets?
From a quick glance, it looks like your recomposition is triggering an insert which is triggering a query update which is then triggering recomposition. If nothing was actually changing the StateFlow
would not emit to Compose UI–so something is changing.
from sqldelight.
Here is the sample project https://github.com/santiwanti/SqlDelighTest.
A LaunchedEffect is used to insert a value, and then that value just blinks on screen for 15 seconds until the recompositions settle
from sqldelight.
On second look (but not yet trying the sample), the problem is that you're returning a new instance from both properties on every call. Remove the get()
on both to create a single instance of each.
The current behavior is such because when recomposition occurs from the insert, viewModel.users
is invoked again which produces a new StateFlow
. That StateFlow
emits an emptyList
and then the real query value comes in which triggers recomposition. Then the process starts all over. Frankly, I'm not sure why it would ever stop.
This can also be fixed by wrapping viewModel.users
in a remember { }
to save StateFlow
instance across recompositions, but there's really no reason the two properties should be creating instances on each call so I would change them instead.
from sqldelight.
You are absolutely right, changing the code to val users: StateFlow<List<User>> = ...
and val users: Flow<List<User>> = ...
fixed the issue. I had always used it as get()
and thought it was the same because I never noticed a difference. Thanks for pointing this out. I will have to checkout the differences
from sqldelight.
Related Issues (20)
- Generated SQL queries when using * (asterisk) and join are not using an alias name, but the table name instead HOT 3
- jvm sqlite driver support splits native binary HOT 4
- java.io.IOException in GeneratedVirtualFile.kt:54
- PostgreSQL - AT TIME ZONE isn't supported HOT 2
- java.lang.LinkageError in ColumnTypeMixin.kt:157
- Behavior change in 2.x when coercing Boolean column types
- PostgreSQL - `SELECT FROM ( VALUES (), () )` expression is not supported HOT 2
- Add timescaledb dialect support
- java.util.NoSuchElementException in InsertStmtUtil.kt:47
- com.intellij.diagnostic.PluginException in PsiUtilCore.java:467
- Insert multiple values statement
- app.cash.sqldelight.gradle.VerifyMigrationTask$VerifyMigrationAction > 'void org.sqlite.core.NativeDB._open_utf8(byte[], int)'`
- app.cash.sqldelight.gradle.VerifyMigrationTask$VerifyMigrationAction > 'void org.sqlite.core.NativeDB._open_utf8(byte[], int)' HOT 2
- java.lang.Throwable in Logger.java:370
- IDE Plugin and gradle test task could be improved when adding a new migration for a NON NULL column? HOT 1
- PostgreSql Boolean Literals are compiling to Long
- java.io.IOException in GeneratedVirtualFile.kt:74
- SQLDelight plugin crashes Gradle build HOT 2
- java.lang.RuntimeException in ProjectService.kt:83
- SQLite: return Long instead of data class in SUM HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqldelight.