An essential component of user interfaces, radio buttons let users pick one item from a list of options. We’ll look at how to make a Radio Widget in Flutter, a well-liked open-source UI software development toolkit, in this article.
We’ll create a straightforward Flutter application to show how to use the Radio Widget and investigate its features.
Prerequisites
Before we begin, make sure you have Flutter and Dart installed on your system. If not, you can follow the installation guide provided on the official Flutter website.
Implementing the Radio Widget
Open the lib/main.dart
file in your project and replace the existing code with the following:
// Include necessary imports import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } // Create the main app widget class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Radio Widget Example', theme: ThemeData( primarySwatch: Colors.blue, ), home: RadioExample(), ); } } // Create the RadioExample widget class RadioExample extends StatefulWidget { @override _RadioExampleState createState() => _RadioExampleState(); } // Create the state for RadioExample class _RadioExampleState extends State<RadioExample> { String selectedOption = 'Option 1'; void _handleRadioValueChange(String value) { setState(() { selectedOption = value; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Radio Widget Example'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ RadioListTile<String>( title: Text('Option 1'), value: 'Option 1', groupValue: selectedOption, onChanged: _handleRadioValueChange, ), RadioListTile<String>( title: Text('Option 2'), value: 'Option 2', groupValue: selectedOption, onChanged: _handleRadioValueChange, ), RadioListTile<String>( title: Text('Option 3'), value: 'Option 3', groupValue: selectedOption, onChanged: _handleRadioValueChange, ), Text( 'Selected Option: $selectedOption', style: TextStyle(fontSize: 18), ), ], ), ), ); } }
Understanding the Code
In this section, we’ll break down the code snippet above and explain its key components:
- Imports: We begin by importing the necessary packages, including
material.dart
for Flutter’s Material Design widgets. - MyApp Widget: This is the root widget of our Flutter app. It sets up the app’s title, theme, and initial screen, which is an instance of the
RadioExample
widget. - RadioExample Widget: This is a
StatefulWidget
responsible for managing the state of our radio options. It extends theState
class to handle state changes. - _RadioExampleState: This is the state class associated with the
RadioExample
widget. It defines theselectedOption
variable to keep track of the currently selected radio option. - _handleRadioValueChange: This method is called when a radio option is selected. It updates the
selectedOption
based on the chosen value. - build Method: The
build
method constructs the user interface of the app. It creates aScaffold
widget with anAppBar
and a centeredColumn
containing threeRadioListTile
widgets. - RadioListTile: This widget represents a radio option with a title, value, group value, and an
onChanged
callback. Thetitle
represents the label of the option,value
is the unique identifier,groupValue
is the selected value, andonChanged
is the callback for handling selection. - Text Widget: This displays the currently selected option.
This will launch the app in an emulator or on a connected device, allowing you to interact with the radio options.
Here are some common properties of the Radio
and RadioListTile
widgets in Flutter, along with examples:
value
(Radio and RadioListTile)
- The value associated with the radio option.
- Used to identify the selected option.
Radio( value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
groupValue
(Radio and RadioListTile)
- The currently selected value from the group of radio options.
- Should match the value of the selected option.
Radio( value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
onChanged
(Radio and RadioListTile)
- A callback function called when the radio option is selected.
- Typically used to update the
groupValue
with the selected value.
Radio( value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
title
(RadioListTile)
The title or label for the radio option.
RadioListTile( title: Text('Option 1'), value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
subtitle
(RadioListTile)
An optional subtitle or additional information for the radio option.
RadioListTile( title: Text('Option 1'), subtitle: Text('This is the first option'), value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
secondary
(RadioListTile)
An optional widget to display next to the radio option, such as an icon.
RadioListTile( title: Text('Option 1'), secondary: Icon(Icons.star), value: 'option1', groupValue: selectedValue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
activeColor
(Radio and RadioListTile)
RadioListTile( title: Text('Option 1'), value: 'option1', groupValue: selectedValue, activeColor: Colors.blue, onChanged: (value) { setState(() { selectedValue = value; }); }, )
These are just a few of the properties available for the Radio
and RadioListTile
widgets in Flutter. You can customize the appearance and behavior of radio options further using these properties.
You’ve successfully created a basic Flutter Radio Widget that allows users to select a single option from a list. In this tutorial, we covered the key properties of the Radio Widget and demonstrated how to use them to build a simple app. You can now explore further customizations and integrate radio buttons into your own Flutter projects.
Related Posts
Mastering FlatButton in Flutter
ElevatedButton Tutorial for Flutter