How to use setState() function inside statelessWidget class

Viewed 272

I can't use setState function inside dialogContent and I got this error :

The method 'setState' isn't defined for the class 'CustomDialog'

and here I used setState()

Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: status ? <Widget>[
                    Container(
                      child: Padding(
                        padding: EdgeInsets.only(right: 5,top: 0),
                        child: Image.asset(
                          'assets/images/profile.png',
                          width: 60.0,
                          height: 60.0,
                        ),
                      ),
                    ),
                    Padding(
                        padding: const EdgeInsets.only(top: 0.0),
                        child: Container(
                          width: 200.0,
                          decoration: BoxDecoration(
                            color: Colors.white,
                            borderRadius: BorderRadius.only(
                              topLeft: const Radius.circular(50.0),
                              topRight: const Radius.circular(50.0),
                              bottomLeft: const Radius.circular(50.0),
                              bottomRight: const Radius.circular(50.0),
                            ),
                          ),
                          child: Padding(
                            padding: const EdgeInsets.all(20.0),
                            child: Center(
                              child: Text(
                                'test',
                                style: TextStyle(
                                    color: Colors.black,
                                    fontWeight: FontWeight.bold,
                                    fontSize: 25.0
                                ),
                              ),
                            ),
                          ),
                        )
                    ),
                    Padding(
                      padding: const EdgeInsets.only(left: 5.0),
                      child: CustomSwitch(
                        activeColor: Colors.green,
                        value: status,
                        onChanged: (value) {
                          print("VALUE : $value");
                          setState(() {
                            status = value;
                          });
                        },
                      ),
                    ),
                  ] :
                  [
                    Expanded(
                      child: Padding(
                        padding: const EdgeInsets.only(left :25.0),
                        child: Center(
                          child: Text(
                            'test',
                            style: TextStyle(
                              color: Colors.red,
                              fontSize: 15.0,
                            ),
                          ),
                        ),
                      ),
                    ),
                    Padding(
                      padding: const EdgeInsets.only(left: 0.0),
                      child: CustomSwitch(
                        activeColor: Colors.green,
                        value: status,
                        onChanged: (value) {
                          print("VALUE : $value");
                          setState(() {
                            status = value;
                          });
                        },
                      ),
                    ),
                  ]
              ),
1 Answers

Sure you can't use setState() in StatelessWidget, that's the idea of this widget. StatelessWidget should be used only for "dumb" views that shouldn't hold any state. If you should set any state to your widget, consider to use StatefulWidget.

Take a look on official flutter documentation: https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html

Related