Цвет фона диалогового окна изменения флаттера

Я использовал свойство dialogBackgroundColor, но цвет не менялся. Может кто подскажет, как изменить цвет фона диалога?


person Community    schedule 08.12.2018    source источник


Ответы (6)


Теперь вы можете использовать свойство backgroundColor AlertDialog, чтобы изменить цвет.

AlertDialog(
  backgroundColor: Colors.orange,
  ...
)
person CopsOnRoad    schedule 17.05.2019

Вы можете сделать это без использования Builder.

Вот пример.

@override
Widget build(BuildContext context) {
  return RaisedButton(
    onPressed: () {
      showDialog(
        context: context,
        builder: (context) {
          return Theme(
            data: Theme.of(context).copyWith(dialogBackgroundColor: Colors.orange),
            child: AlertDialog(
              title: Text("Dialog Title"),
            ),
          );
        },
      );
    },
    child: Text("Show dialog"),
  );
}
person CopsOnRoad    schedule 22.12.2018

Вам нужно обернуть свой Dialog в Builder вот так. После этого dialogBackgroundColor будет иметь эффект.

Theme(
  data: ThemeData(dialogBackgroundColor: Colors.orange),
  child: Builder(
    builder: (context) {
      return RaisedButton(
        onPressed: () {
          showDialog(
            context: context,
            builder: (context) {
              return AlertDialog(
                title: Text("Dialog title"),
              );
            },
          );
        },
        child: Text("Show dialog"),
      );
    },
  ),
)
person Community    schedule 08.12.2018
comment
Побочный эффект заключается в том, что он также изменит тему RaisedButton. - person Gudin; 02.09.2020

Этот блок кода работает на меня. Здесь вы можете изменить цвет из этой строки data: Theme.of (context) .copyWith (dialogBackgroundColor: Colors.white)

void openDialog(BuildContext context) {
    showDialog(
      context: context,
      barrierDismissible: true,
      builder: (context) {
        return Theme(
          data:
              Theme.of(context).copyWith(dialogBackgroundColor: Colors.white),
          child: new SimpleDialog(
            title: new Text("Title Here...."),
            children: <Widget>[
              new SimpleDialogOption(
                child: Text('Demo Text One'),
                onPressed: () {
                  Navigator.pop(context);
                },
              ),
              new SimpleDialogOption(
                child: Text('Demo Text Two'),
                onPressed: () {
                  Navigator.pop(context);
                },
              ),
              new SimpleDialogOption(
                child: Text('Close'),
                onPressed: () {
                  Navigator.pop(context);
                },
              ),
            ],
          ),
        );
      },
    );
  }
person Tejas Shukla    schedule 10.01.2020
comment
Привет, я уже говорил об этом в моем ответе. - person CopsOnRoad; 10.11.2020

Теперь вы можете использовать свойство backgroundColor в AlertDialog, чтобы изменить цвет.

    showDialog(
   context: context,
   builder: (BuildContext context) {
       return AlertDialog(
         shape: RoundedRectangleBorder(
         borderRadius: BorderRadius.all(Radius.circular(20.0))),
         backgroundColor: Colors.green,
   content: Container(...)
),
}),
person Ahmed Raza    schedule 19.01.2021

person    schedule
comment
Добавьте полезный текст, а не только код, и минимум кода, чтобы сделать его действительно полезным. - person Robert Sandberg; 07.02.2021