颤振复选框在 StatelessWidget 中不起作用

Ash*_*ery 6 android dart hybrid-mobile-app flutter flutter-layout

这是我的班级

class Home extends StatelessWidget {
Run Code Online (Sandbox Code Playgroud)

复选框位于此处。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: EdgeInsets.all(20.0),
              child: Column(
                children: <Widget>[
                  TextField(
                      controller: ctrlMotherName,
                      decoration: InputDecoration(
                          labelText: "Name of Mother",
                          border: OutlineInputBorder()
                      )
                  ),
                  SizedBox(height: 10,),
                  Checkbox(
                    value: false,
                    onChanged: (bool val){

                    },
                  ),
Run Code Online (Sandbox Code Playgroud)

我无法选中该复选框。当我使用 Radiobutton 时也发现同样的问题。

Ben*_*min 3

您需要使用 aStatefulWidget因为您正在处理不断变化的值。我提供了一个例子:

class MyAppOne extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyAppOne> {
  bool _myBoolean = false;

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Checkbox(
        value: _myBoolean,
        onChanged: (value) {
          setState(() {
            _myBoolean = value; // rebuilds with new value
          });
        },
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 但为什么我可以在没有 StatefulWidget 的情况下更改 TextField 值? (4认同)