Метод showMaterialBanner
Метод showMaterialBanner класса ScaffoldMessenger выводит
MaterialBanner
под AppBar, пока пользователь не закроет его.
Вызывают у
ScaffoldMessenger.of(context).
Синтаксис
ScaffoldMessenger.of(context).showMaterialBanner(
MaterialBanner(
content: Text('abcde'),
actions: [
TextButton(onPressed: () {}, child: Text('12345')),
],
),
)
Параметры
| Параметр | Описание |
|---|---|
banner |
Виджет MaterialBanner с content и actions.
|
Пример
Давайте покажем баннер по кнопке:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: BannerDemo()));
}
class BannerDemo extends StatelessWidget
{
const BannerDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
appBar: AppBar(title: Text('abcde')),
body: Center(
child: ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showMaterialBanner(
MaterialBanner(
content: Text('12345'),
actions: [
TextButton(
onPressed: () {
ScaffoldMessenger.of(context)
.hideCurrentMaterialBanner();
},
child: Text('abcde'),
),
],
),
);
},
child: Text('abcde'),
),
),
);
}
}
Под AppBar появится MaterialBanner с текстом '12345'.
Пример
Давайте добавим leading в баннер:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: BannerLeadDemo()));
}
class BannerLeadDemo extends StatelessWidget
{
const BannerLeadDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showMaterialBanner(
MaterialBanner(
leading: Icon(Icons.info),
content: Text('abcde'),
actions: [
TextButton(onPressed: () {}, child: Text('12345')),
],
),
);
},
child: Text('12345'),
),
),
);
}
}
Баннер покажет иконку слева от текста.
Смотрите также
-
виджет
MaterialBanner,
содержимое баннера -
метод
showSnackBar,
короткая плашка снизу -
виджет
Banner,
ленточный бейдж на виджете -
метод
hideCurrentMaterialBanner,
скрыть текущий баннер