Flutter Mar 29, 2019

Keys! What are they good for?

Article Summary

Emily Fortuna from Flutter reveals why most developers use Keys wrong—and when you actually need them. Spoiler: it's not as often as you think.

This deep-dive from the Flutter team explains Keys in Flutter development—a widely misunderstood feature that preserves state when widgets move in your tree. Through visual examples and code walkthroughs, it clarifies when Keys are essential versus unnecessary overhead.

Key Takeaways

Critical Insight

Keys preserve state during widget reordering, but only stateful widget collections need them—stateless widgets work fine without any Keys at all.

The article reveals a common mistake that causes widgets to display completely random colors when developers think they're using Keys correctly.

About This Article

Problem

Developers often put Keys on nested child widgets instead of at the top of the widget subtree. This causes Flutter to create new state instances and lose data consistency when collections are reordered.

Solution

Emily Fortuna shows the right way to place Keys by wrapping Padding widgets with Keys at the parent level. This lets Flutter's element-to-widget-matching algorithm preserve state correctly across tree reorganizations.

Impact

When Keys are placed at the subtree top level, stateful widgets maintain their state and show the expected visual changes when collections are reordered. The color-swapping tile example shows this working as it should.