Функция showGeneralDialog
Функция showGeneralDialog похожа на showDialog, но принимает
pageBuilder и transitionBuilder.
Контекст - context,
страница - в pageBuilder,
анимация - в transitionBuilder.
Используют для нестандартных окон.
Синтаксис
showGeneralDialog(
context: context,
pageBuilder: (BuildContext context, Animation<double> a1, Animation<double> a2) {
return Center(child: Text('abcde'));
},
)
Параметры
| Параметр | Описание |
|---|---|
context |
Контекст экрана. |
pageBuilder |
Строит виджет диалога. |
barrierDismissible |
Закрытие по нажатию на барьер. |
Пример
Давайте покажем простой general dialog:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: GenDialogPage()));
}
class GenDialogPage extends StatelessWidget
{
const GenDialogPage({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
showGeneralDialog(
context: context,
pageBuilder: (ctx, a1, a2) {
return AlertDialog(title: Text('abcde'));
},
);
},
child: Text('12345'),
),
),
);
}
}
Откроется AlertDialog через general API.
Пример
Давайте обернём контент в Material:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: GenDialogPage2()));
}
class GenDialogPage2 extends StatelessWidget
{
const GenDialogPage2({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
showGeneralDialog(
context: context,
pageBuilder: (ctx, a1, a2) {
return Material(
child: Padding(
padding: EdgeInsets.all(32),
child: Text('abcde'),
),
);
},
);
},
child: Text('abcde'),
),
),
);
}
}
По центру появится Material с текстом 'abcde'.
Смотрите также
-
функция
showDialog,
упрощённый вызов диалога -
функция
showAdaptiveDialog,
адаптивный стиль -
виджет
Dialog,
форма окна -
виджет
Material,
подложка содержимого