Если вы хотите, чтобы FloatingActionButton
всегда имел нижний отступ, вы можете просто обернуть его виджетом Padding
следующим образом:
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: Padding(
padding: EdgeInsets.only(bottom: 40.0),
child: FloatingActionButton(
onPressed: () {},
),
),
appBar: AppBar(
title: Text('SnackBar'),
),
body: Builder(
builder: (context) => RaisedButton(
onPressed: () => _displaySnackBar(context),
child: Text('Show SnackBar'),
),
),
);
}
Если вы хотите, чтобы FloatingActionButton
имелновые отступы, когда SnackBar
виден, вы можете изменить заполнение, когда вы показываете SnackBar
следующим образом:
double _fabPadding = 0.0;
_displaySnackBar(BuildContext context) {
final snackBar = SnackBar(content: Text('SnackBar'));
setState(() {
_fabPadding = 40.0;
});
Scaffold.of(context).showSnackBar(snackBar).closed.then((_) {
setState(() {
_fabPadding = 0.0;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: Padding(
padding: EdgeInsets.only(bottom: _fabPadding),
child: FloatingActionButton(
onPressed: () {},
),
),
appBar: AppBar(
title: Text('SnackBar'),
),
body: Builder(
builder: (context) => RaisedButton(
onPressed: () => _displaySnackBar(context),
child: Text('Show SnackBar'),
),
),
);
}
Редактировать: Если вы хотите избежатьSnackBar
нажмите позицию FloatingActionButton
, для которой вы можете установить свойство поведения SnackBar
в SnackBarBehavior.floating
SnackBarBehavior
с плавающей точкой→ const SnackBarBehavior Это поведение приведет к тому, что SnackBar будет отображаться над другими виджетами в скаффолде. Это включает отображение над BottomNavigationBar и FloatingActionButton.