How to make RadioListTile widget disabled in flutter
Solution 1
I think you have already figured out the answer from the code.
the solution is to declare bool value evaluate
in my case then on button click make that value true and setstate with that value and on the onChanged
prop of the RadioListTile
add this code:
onChanged: (value) => evaluate ? null : value = 0,
hope this was helpful!
Solution 2
Whenever onChange
is null the component will become disabled. You should be able to do something link this instead:
onChanged: evaluate ? null : (value) => value = 0,
I would also rename evaluate
to make it easier to understand, something like alreadyProvided
, notAllowed
, disabled
or whatever makes sense, the most important thing is to really represent why it can't be changed.
In the end it could look like:
onChanged: alreadyProvided ? null : (value) => value = 0,
biniyam112
Updated on December 26, 2022Comments
-
biniyam112 over 1 year
I'm using the
RadioListTile
widget in my application and I want to disable changing the value after some condition is satisfied. and there is noisButtonDisabled
prop just like inRadio
widget. how can I disable this widget(stop the value from changing)?By the time I was writing the above statement I figured it out and it was easy. so Ill post the question and will answer it below.
import 'package:flutter/material.dart'; class Body extends StatefulWidget { @override _BodyState createState() => _BodyState(); } class _BodyState extends State<Body> { bool evaluate = false; int value; @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ RadioListTile<int>( value: 0, isThreeLine: false, title: Text( 'radio 1', style: TextStyle( fontWeight: FontWeight.bold, ), ), groupValue: value, onChanged: (value) => evaluate ? null : value = 0, activeColor: Colors.green, ), RadioListTile<int>( value: 1, isThreeLine: false, title: Text( 'radio 2', style: TextStyle( fontWeight: FontWeight.bold, ), ), groupValue: value, onChanged: (value) => evaluate ? null : value = 1, activeColor: Colors.green, ), InkWell( onTap: () { evaluate = true; }, child: Container( child: Center( child: Text( 'Submit answer', ), ), ), ) ], ); } }