簡體   English   中英

如何在 flutter 中禁用 RadioListTile 小部件

[英]How to make RadioListTile widget disabled in flutter

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

每當onChange為 null 時,組件將被禁用。 你應該能夠做一些鏈接這個而不是:

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

我還將重命名evaluate以使其更易於理解,例如alreadyProvidednotAlloweddisabled或任何有意義的東西,最重要的是真正代表它為什么不能更改。

最后它可能看起來像:

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

我想你已經從代碼中找到了答案。 解決方案是在我的情況下聲明 bool 值evaluate ,然后單擊按鈕使該值變為 true 並使用該值設置狀態,並在RadioListTileonChanged道具上添加以下代碼:

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

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM