在 Flutter 中选中一个复选框 -> 禁用复选框,并且应在复选框选中启用文本字段

In Flutter check a checkbox -> disabled checkbox and text field should be enabled in checkbox check

我是 Flutter 的新手。

如果我单击一个复选框,应该执行操作。

例如:单击一个复选框,启用另一个复选框并启用一个文本字段 仅对按钮单击禁用或启用小部件可用。 我不知道如何在 flutter 中做到这一点

想法是使用三元运算符 (?:) 这与 if 的工作原理相同。关于下面代码的最基本解释,当复选框被触发时,checkBox1 发生变化,小部件重建时 checkBox1 现在等于 true,所以我们正在构建新的 CheckBox 而不是空容器。

import 'package:flutter/material.dart';
    
void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool checkBox1 = false;
  bool checkBox2 = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        children: [
          CheckboxListTile(
            title: Text("title text"),
            value: checkBox1,
            onChanged: (newValue) {
              setState(() {
                checkBox1 = newValue;
              });
            },
          ),
          checkBox1
              ? CheckboxListTile(
                  title: Text("title text2"),
                  value: checkBox2,
                  onChanged: (newValue) {
                    setState(() {
                      checkBox2 = newValue;
                    });
                  },
                )
              : Container(),
        ],
      ),
    );
  }
}
  final TextEditingController _controllerTE =
      TextEditingController();
  bool cbFlag = false;

TextField(
  readOnly: !cbFlag,
  controller: _controllerTE,
  decoration: InputDecoration(
    labelText: 'TE disabled till CB checked',
    prefixIcon: Checkbox(
      value: cbFlag,
      onChanged: (bool? value) {
        setState(() {
          cbFlag = value!;
        });
      },
    ),
  ),
),