Search code examples
flutterdartflutter-alertdialog

Flutter & AlertDialog : How to stretch a container so that it has the same width with the AlertDialog box?


I have been trying to make a button in AlertDialog box in Flutter. But I cannot find a way to stretch the button container. Please check my code and see the example picture below.

AlertDialog(
                    title: Center(child: Text("Picture")),
                    content: Column(
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        Container(
                          width: width,
                          //height: height,
                          child: FadeInImage.memoryNetwork(
                            placeholder: kTransparentImage,
                            image: image.url,
                          ),
                        ),
                        SizedBox(
                          height: 10,
                        ),
                        InkWell(
                          onTap: () {
                            Navigator.pop(context);
                          },
                          child: Container(
                            alignment: Alignment.center,
                            height: 50,
                            width: width,
                            color: primaryColor,
                            child: Text(
                              'Okay',
                              style: TextStyle(
                                  color: Colors.white,
                                  fontWeight: FontWeight.bold),
                            ),
                          ),
                        ),
                      ],
                    ),
                  );

enter image description here

Please help me in this. I am looking forward to hearing your opinion. Thank you in advance.


Solution

  • The AlertDialog has a default content padding of 24 logical pixels to the right, left and bottom of the AlertDialog to separate the content from the other edges of the dialog..

    To Make the Button fit the AlertDialog width, you will need to give the AlertDialog a padding of zero and apply paddings to others widgets except the Button.

    I added an example using your code:


    
         AlertDialog(
                        // change the default padding to zero
                        contentPadding: EdgeInsets.zero,
                        title: Center(child: Text("Picture")),
                        content: Column(
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                             // wrap your container with a padding widget
                             Padding(
                             padding: const EdgeInsets.all(20.0), // give a preferred padding
                             child: Container(
                             width: width,
                             //height: height,
                             placeholder: kTransparentImage,
                             image: image.url,
                                ),
                               ),
                              ),
                            SizedBox(
                              height: 10,
                            ),
                            InkWell(
                              onTap: () {
                                Navigator.pop(context);
                              },
                              child: Container(
                                alignment: Alignment.center,
                                height: 50,
                                width: width,
                                color: primaryColor,
                                child: Text(
                                  'Okay',
                                  style: TextStyle(
                                      color: Colors.white,
                                      fontWeight: FontWeight.bold),
                                ),
                              ),
                            ),
                          ],
                        ),
                      );