如何在颤动中禁用 RadioListTile 小部件

问题描述

我在我的应用程序中使用 RadioListTile 小部件,我想在满足某些条件后禁用更改值。并且没有 isButtondisabled 道具,就像在 Radio 小部件中一样。如何禁用此小部件(停止更改值)?

当我写下上面的语句时,我想通了,这很容易。 所以我会发布问题并在下面回答。

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,title: Text(
            'radio 2',onChanged: (value) => evaluate ? null : value = 1,InkWell(
          onTap: () {
            evaluate = true;
          },child: Container(
            child: Center(
              child: Text(
                'Submit answer',)
      ],);
  }
}

解决方法

每当 onChange 为空时,组件将被禁用。你应该可以做点什么来链接这个:

onChanged: evaluate ? null : (value) => value = 0,

我还会重命名 evaluate 以使其更易于理解,例如 alreadyProvidednotAlloweddisabled 或任何有意义的东西,最重要的是真正代表为什么它不能改变。

最后它可能看起来像:

onChanged: alreadyProvided ? null : (value) => value = 0,
,

我想你已经从代码中找到了答案。 解决方案是在我的情况下声明 bool 值 evaluate 然后单击按钮使该值变为 true 并使用该值设置状态并在 onChangedRadioListTile 道具上添加以下代码:>

onChanged: (value) => evaluate ? null : value = 0,

希望这对您有帮助!