ListView showing duplicate rows with same data instead of correct filtered rows (Supabase view query)

Database & APIs

I have a FoodLogPage with 4 ListViews, each querying a Supabase view called food_logs_with_name (a view built on top of food_logs table, exposing a flattened food_name field from a jsonb column).

Each ListView has 2 filters: user_id == [Authenticated User > User ID] AND meal_type == [Breakfast/Lunch/Dinner/Snack]. Single Time Query is enabled (required since the view has no primary key and doesn't support streaming with multiple filters).

Issue: After deleting one ListView and confirming all data in Supabase is correct (verified via SQL: exact string match on meal_type values, no hidden characters, correct row count), the remaining "Breakfast" ListView — which should show exactly 1 row — is now rendering the same row 4 times (duplicated), and ListViews for Lunch/Dinner/Snack (which have exactly 1 matching row each in the database) show 0 rows / nothing.

What have you tried so far?

I confirmed:

  • Supabase data is correct (verified via SQL Editor, food_logs_with_name view returns all 4 rows correctly with exact field matches)

  • Filters in FlutterFlow UI are correctly configured (verified Field Name, Relation, Value for both filters on multiple ListViews)

  • Schema was re-imported, no caching issue (Query Cache Settings disabled)

  • Tested in fresh Run Mode sessions (new session URL each time)

  • Verified only 1 Column exists inside each ListView (no duplicate templates)

  • Tried toggling Single Time Query off — this throws "Supabase streaming queries support at most one filter" / "Streaming queries are not supported for tables without primary keys" errors, confirming it must stay on

  • This appears to be a Run Mode / Test Mode rendering bug rather than a configuration issue

Could you help investigate why the ListView is rendering duplicate/stale rows instead of correctly reflecting the filtered Supabase view data?

Did you check FlutterFlow's Documentation for this topic?
No
2
3 replies