Функция showDialog
Функция showDialog показывает окно поверх маршрута.
В context передают контекст экрана,
в builder - виджет окна, обычно
AlertDialog.
Возвращает Future с результатом после закрытия.
Синтаксис
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(title: Text('abcde'));
},
)
Параметры
| Параметр | Описание |
|---|---|
context |
Контекст активного экрана. Обязательный параметр. |
builder |
Строит содержимое окна. Обязательный параметр. |
barrierDismissible |
Закрывать окно по нажатию на затемнённый фон. |
useRootNavigator |
Какой Navigator использовать для маршрута окна.
|
Пример
Давайте откроем AlertDialog по нажатию кнопки:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: DialogDemo()));
}
class DialogDemo extends StatelessWidget
{
const DialogDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext ctx) {
return AlertDialog(
title: Text('abcde'),
content: Text('12345'),
);
},
);
},
child: Text('abcde'),
),
),
);
}
}
Поверх экрана появится AlertDialog с заголовком и текстом.
Пример
Давайте закроем окно кнопкой в actions:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: DialogDemo2()));
}
class DialogDemo2 extends StatelessWidget
{
const DialogDemo2({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (BuildContext ctx) {
return AlertDialog(
title: Text('12345'),
actions: [
TextButton(
onPressed: () => Navigator.pop(ctx),
child: Text('abcde'),
),
],
);
},
);
},
child: Text('12345'),
),
),
);
}
}
Кнопка 'abcde' вызовет Navigator.pop и закроет диалог.
Смотрите также
-
виджет
AlertDialog,
готовое окно с title и actions -
функция
showGeneralDialog,
диалог с настройкой анимации -
функция
showAdaptiveDialog,
стиль под iOS илиMaterial -
виджет
Dialog,
форма окна без готового содержимого