如何在 flutter 中禁用 RadioListTile 小部件
How to make RadioListTile widget disabled in flutter
我在我的应用程序中使用 RadioListTile
小部件,我想在满足某些条件后禁用更改值。并且没有像 Radio
小部件中那样的 isButtonDisabled
道具。我怎样才能禁用这个小部件(阻止值改变)?
当我写上面的语句时,我想通了,而且很简单。
所以我 post 这个问题会在下面回答。
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',
),
),
),
)
],
);
}
}
我想你已经从代码中找到了答案。
解决方案是在我的例子中声明 bool 值 evaluate
然后单击按钮使该值变为真并使用该值设置状态并在 RadioListTile
的 onChanged
道具上添加此代码:
onChanged: (value) => evaluate ? null : value = 0,
希望对您有所帮助!
只要 onChange
为空,组件就会被禁用。你应该可以做一些事情 link 这个:
onChanged: evaluate ? null : (value) => value = 0,
我也会重命名 evaluate
以使其更容易理解,例如 alreadyProvided
、notAllowed
、disabled
或任何有意义的东西,最重要的是真正代表为什么它不能改变。
最后它可能看起来像:
onChanged: alreadyProvided ? null : (value) => value = 0,
我在我的应用程序中使用 RadioListTile
小部件,我想在满足某些条件后禁用更改值。并且没有像 Radio
小部件中那样的 isButtonDisabled
道具。我怎样才能禁用这个小部件(阻止值改变)?
当我写上面的语句时,我想通了,而且很简单。 所以我 post 这个问题会在下面回答。
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',
),
),
),
)
],
);
}
}
我想你已经从代码中找到了答案。
解决方案是在我的例子中声明 bool 值 evaluate
然后单击按钮使该值变为真并使用该值设置状态并在 RadioListTile
的 onChanged
道具上添加此代码:
onChanged: (value) => evaluate ? null : value = 0,
希望对您有所帮助!
只要 onChange
为空,组件就会被禁用。你应该可以做一些事情 link 这个:
onChanged: evaluate ? null : (value) => value = 0,
我也会重命名 evaluate
以使其更容易理解,例如 alreadyProvided
、notAllowed
、disabled
或任何有意义的东西,最重要的是真正代表为什么它不能改变。
最后它可能看起来像:
onChanged: alreadyProvided ? null : (value) => value = 0,