【问题标题】:How to make RadioListTile widget disabled in flutter如何在颤动中禁用 RadioListTile 小部件
【发布时间】:2021-04-10 01:58:43
【问题描述】:

我在我的应用程序中使用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,
          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',
              ),
            ),
          ),
        )
      ],
    );
  }
}

【问题讨论】:

    标签: android flutter dart mobile-application


    【解决方案1】:

    只要onChange 为空,组件就会被禁用。你应该可以做一些链接这个:

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

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

    最后可能是这样的:

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

    【讨论】:

      【解决方案2】:

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

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

      希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 2019-10-29
        • 1970-01-01
        • 2023-03-06
        • 2021-02-17
        • 2021-03-13
        • 2021-08-04
        相关资源
        最近更新 更多