#flutter #android-alertdialog #multiple-alert-dialogs
#flutter #android-alertdialog #диалоги с несколькими предупреждениями
Вопрос:
Flutter и AlertDialog: как мне выровнять его по низу? Как я создаю 2 диалоговых окна с предупреждениями, подобных этим изображениям?Пожалуйста, посмотрите на эту картинку.
showDialog(
context: context,
builder: (BuildContext context) {
double width =
MediaQuery.of(context).size.width;
double height =
MediaQuery.of(context).size.height;
return AlertDialog(
backgroundColor: Colors.transparent,
contentPadding: EdgeInsets.zero,
title: Center(
child: Text("Evaluation our APP")),
content: Container(
// What Should I write here?
)
},
);
Комментарии:
1. Привет! Я думаю, что это всего лишь одно диалоговое окно с предупреждением. В контейнер размера вы можете добавить столбец (дочерний элемент: [ListTitle,ListTitle,ListTitle, SizedBox, ListTitle ] ).
2. Но тогда все плитки списка будут подключены. Как мы можем сделать фон прозрачным?
Ответ №1:
Вот одно из решений:
showDialog(
context: context,
builder: (BuildContext context) {
double width = MediaQuery.of(context).size.width;
double height = MediaQuery.of(context).size.height;
return AlertDialog(
backgroundColor: Colors.transparent,
contentPadding: EdgeInsets.zero,
elevation: 0.0,
// title: Center(child: Text("Evaluation our APP")),
content: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
const BorderRadius.all(Radius.circular(10.0))),
child: Column(
children: [
Text("a"),
Divider(),
Text("b"),
Divider(),
Text("c"),
],
),
),
SizedBox(
height: 10,
),
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
const BorderRadius.all(Radius.circular(10.0))),
child: Center(child: Text("d")),
)
],
));
},
);
Комментарии:
1. Я попробовал ваш способ. Но фон не совсем прозрачный. Вы можете видеть тень диалогового окна с предупреждением
2. Пожалуйста, убедитесь, что высота ‘AlertDialog’ равна 0.0. Я также отредактировал ваш код.
3. Спасибо! Это работает. То, что вы сказали, было очень полезно для меня.
Ответ №2:
вот мой ответ, чистый виджет без создания AlertDialog:
final content = Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: const BorderRadius.all(Radius.circular(10.0)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TextButton(onPressed: () {}, child: Text("a"),),
Divider(height: 1,),
TextButton(onPressed: () {}, child: Text("b"),),
Divider(height: 1,),
TextButton(onPressed: () {}, child: Text("c"),),
],
),
),
SizedBox(
height: 10,
),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
const BorderRadius.all(Radius.circular(10.0)),
),
child: TextButton(onPressed: () {}, child: Text("d"),),
),
SizedBox(
height: 40,
),
],
);
showDialog(
context: context,
builder: (ctx) {
return FractionallySizedBox(
widthFactor: 0.9,
child: Material(
type: MaterialType.transparency,
child: content,
),
);
}
);
необходимо добавить Material
из-за ошибки рисования текста.