Handling user input is a fundamental aspect of building interactive applications in Flutter. Flutter provides various widgets to capture user input, such as TextField, Checkbox, Radio, and Slider. In this guide, we will explore how to handle user input using these widgets, along with sample code and explanations.
1. Using TextField for Text Input
The TextField widget is used to capture text input from the user. You can manage the input using a TextEditingController to retrieve the current value of the text field.
Example of TextField
import 'package:flutter/material.dart';
class TextFieldExample extends StatefulWidget {
@override
_TextFieldExampleState createState() => _TextFieldExampleState();
}
class _TextFieldExampleState extends State<textfieldexample> {
final TextEditingController _controller = TextEditingController();
String _inputText = '';
void _updateText() {
setState(() {
_inputText = _controller.text;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
TextField(
controller: _controller,
decoration: InputDecoration(labelText: 'Enter some text'),
),
ElevatedButton(
onPressed: _updateText,
child: Text('Submit'),
),
Text('You entered: $_inputText'),
],
);
}
}
</textfieldexample>In this example:
- A
TextEditingControlleris created to manage the text input. - The
TextFieldwidget uses the controller to capture user input. - When the `Submit` button is pressed, the
_updateTextmethod is called, which updates the displayed text.
2. Using Checkbox for Boolean Input
The Checkbox widget allows users to select or deselect an option. You can manage the state of the checkbox using a boolean variable.
Example of Checkbox
class CheckboxExample extends StatefulWidget {
@override
_CheckboxExampleState createState() => _CheckboxExampleState();
}
class _CheckboxExampleState extends State<checkboxexample> {
bool _isChecked = false;
@override
Widget build(BuildContext context) {
return Row(
children: [
Checkbox(
value: _isChecked,
onChanged: (bool? value) {
setState(() {
_isChecked = value!;
});
},
),
Text('Check me!'),
],
);
}
}
</checkboxexample>In this example:
- A boolean variable
_isCheckedis used to track the state of the checkbox. - The
Checkboxwidget updates the state when the user interacts with it. - The
setStatemethod is called to rebuild the widget with the updated state.
3. Using Radio Buttons for Selection
The Radio widget allows users to select one option from a set of choices. You can manage the selected value using a variable.
Example of Radio Buttons
class RadioExample extends StatefulWidget {
@override
_RadioExampleState createState() => _RadioExampleState();
}
class _RadioExampleState extends State<radioexample> {
String? _selectedOption;
@override
Widget build(BuildContext context) {
return Column(
children: [
ListTile(
title: Text('Option 1'),
leading: Radio<string>(
value: 'Option 1',
groupValue: _selectedOption,
onChanged: (String? value) {
setState(() {
_selectedOption = value;
});
},
),
),
ListTile(
title: Text('Option 2'),
leading: Radio<string>(
value: 'Option 2',
groupValue: _selectedOption,
onChanged: (String? value) {
setState(() {
_selectedOption = value;
});
},
),
),
Text('Selected: $_selectedOption'),
],
);
}
}
</string></string></radioexample>In this example:
- A variable
_selectedOptionis used to track the currently selected radio button. - The
Radiowidgets are grouped by thegroupValueproperty, ensuring only one can be selected at a time. - When a radio button is selected, the
setStatemethod is called to update the UI with the selected option.
4. Using Slider for Range Input
The Slider widget allows users to select a value from a range. You can manage the slider's value using a double variable.
Example of Slider
class SliderExample extends StatefulWidget {
@override
_SliderExampleState createState() => _SliderExampleState();
}
class _SliderExampleState extends State<sliderexample> {
double _sliderValue = 0.0;
@override
Widget build(BuildContext context) {
return Column(
children: [
Slider(
value: _sliderValue,
min: 0.0,
max: 100.0,
divisions: 100,
label: _sliderValue.round().toString(),
onChanged: (double value) {
setState(() {
_sliderValue = value;
});
},
),
Text('Slider value: ${_sliderValue.round()}'),
],
);
}
}
</sliderexample>In this example:
- A double variable
_sliderValueis used to track the current value of the slider. - The
Sliderwidget updates the value as the user drags the slider. - When the slider value changes, the
setStatemethod is called to update the displayed value.
5. Conclusion
Handling user input in Flutter is straightforward with the various input widgets available. By using widgets like TextField, Checkbox, Radio, and Slider, developers can create interactive applications that respond to user actions. Understanding how to manage state and update the UI accordingly is essential for building responsive Flutter applications.
