Как установить расстояние между снэк-баром и плавающей кнопкой действия? - PullRequest
0 голосов
/ 12 октября 2019

Как установить расстояние между снэк-баром и плавающей кнопкой действия?

screenshot

Ответы [ 3 ]

0 голосов
/ 12 октября 2019

Вы пробовали

floatingActionButton: Column(mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end, children: [
  FloatingActionButton(
    onPressed: _doOrder,
    mini: false,
    elevation: 10,
    child: Icon(EvaIcons.shoppingBagOutline),
  ),
  Container(
    height: 50,
  )
]),
0 голосов
/ 12 октября 2019

Если вы хотите, чтобы 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.

0 голосов
/ 12 октября 2019

Вы не можете установить это !! это то же самое, что и снизу плюс SnackBar высота.

, но если вы хотите отрегулировать его, вы не можете использовать FAB из Scaffold, а вместо этого сделать тело Stack и последнимСлой - это ваш FAB, и оберните его внутри AnimatedPositioned, чтобы вы могли анимировать его на нужном расстоянии от дна, как хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...