Having gestures managed is a good start point of interaction with the user, but it's obviously not enough. Getting user data is what adds content to many applications.
Flutter provides many input data widgets to help the developer to get different kinds of information from the user. We already have seen some of them in Chapter 4, Widgets: Building Layouts in Flutter, including TextField, and different kinds of Selector and Picker widgets.
Although we can manage all the data input by the user by ourselves (let's say, in a root widget that holds all the input fields), this can get cumbersome, because it could lead to us having many fields and so we would probably end up increasing code complexity. Splitting all the input widgets into small pieces helps, but does not resolve everything.
Flutter provides two widgets to help organize input in code, validate...