Why This Happens
In Dart, calling .first, .last, or .single on an empty List or Iterable throws a StateError because there is no element to return. Use .firstOrNull, .isEmpty checks, or firstWhere with an orElse callback to handle the empty case.
The Problem
final list = <String>[];
final item = list.first; // List is empty!The Fix
final list = <String>[];
final item = list.firstOrNull ?? 'default';Step-by-Step Fix
- 1
Identify the error
Look at the error message: Bad state: No element. This means .first, .last, or .single was called on an empty collection.
- 2
Find the cause
Check the stack trace to find which collection was empty, and determine why it had no elements at that point.
- 3
Apply the fix
Use .firstOrNull, check .isEmpty before accessing, or use .firstWhere with an orElse fallback.
Got the actual stack trace?
Paste it into our free AI explainer to get the cause and the fix for your specific case — no signup, nothing to install.
Explain my errorBugsly catches this automatically
Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.
Try Bugsly free