// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; /// Flutter code sample for custom labeled radio. void main() => runApp(const LabeledRadioApp()); class LabeledRadioApp extends StatelessWidget { const LabeledRadioApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData(useMaterial3: true), home: Scaffold( appBar: AppBar(title: const Text('Custom Labeled Radio Sample')), body: const LabeledRadioExample(), ), ); } } class LabeledRadio extends StatelessWidget { const LabeledRadio({ super.key, required this.label, required this.padding, required this.groupValue, required this.value, required this.onChanged, }); final String label; final EdgeInsets padding; final bool groupValue; final bool value; final ValueChanged onChanged; @override Widget build(BuildContext context) { return InkWell( onTap: () { if (value != groupValue) { onChanged(value); } }, child: Padding( padding: padding, child: Row( children: [ Radio( groupValue: groupValue, value: value, onChanged: (bool? newValue) { onChanged(newValue!); }, ), Text(label), ], ), ), ); } } class LabeledRadioExample extends StatefulWidget { const LabeledRadioExample({super.key}); @override State createState() => _LabeledRadioExampleState(); } class _LabeledRadioExampleState extends State { bool _isRadioSelected = false; @override Widget build(BuildContext context) { return Scaffold( body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ LabeledRadio( label: 'This is the first label text', padding: const EdgeInsets.symmetric(horizontal: 5.0), value: true, groupValue: _isRadioSelected, onChanged: (bool newValue) { setState(() { _isRadioSelected = newValue; }); }, ), LabeledRadio( label: 'This is the second label text', padding: const EdgeInsets.symmetric(horizontal: 5.0), value: false, groupValue: _isRadioSelected, onChanged: (bool newValue) { setState(() { _isRadioSelected = newValue; }); }, ), ], ), ); } }