From "pressing Enter does nothing" to "the Enter on the arrow-key area still inserts a newline", these desktop input field pitfalls ultimately trace back to a Focus model problem.

Prologue: a bug reported by a user

"After typing in the input field, the first Enter inserts a newline, and only the second one actually submits."

This is an extremely representative problem in Flutter desktop development: mobile input logic cannot be directly transplanted to desktop. On mobile, the "send" button on the soft keyboard naturally triggers onSubmitted; on desktop, there's a physical keyboard where Enter, Shift, and arrow keys are independent visible physical events whose semantics must be defined by the developer.

(Background: this input field comes from an AI-driven interactive narrative app, where the user enters instructions as a "Fate" and the AI unfolds the story. The input field and the streaming reply are the two core interaction entry points of this app, so their details deserve careful polishing.)