Изменить положение закусочной Flutter

Я хочу отображать простое исчезающее сообщение об ошибке над кнопкой, когда не выполняются определенные условия. Кажется, что Snackbar Flutter хорошо подходит для этой цели.

Однако мне трудно изменить положение Snackbar на что-либо иное, кроме как в самом низу экрана. Это возможно? Если нет, то есть ли виджет, лучше подходящий для этой цели?

Мой текущий код закусочной:

class ContinueButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      margin: const EdgeInsets.only(
          bottom: 24.0, top: 24.0),
      child: Align(
        alignment: FractionalOffset.bottomCenter,
        child: MaterialButton(
          onPressed: () {
            final snackBar = SnackBar(
              content: Text('Yay! A SnackBar!'),
            );
            Scaffold.of(context).showSnackBar(snackBar);
          },

          child: Text('Continue'),
          height: 40.0,
          minWidth: 300.0,
          color: Colors.greenAccent,
        ),
      ),
    );
  }
}

person mongy910    schedule 11.09.2018    source источник


Ответы (5)


Это можно сделать, поместив контейнер внутрь закусочной. Так как закусочная может принимать любой виджет, и вы можете изменить цвет его фона на прозрачный, вы можете использовать контейнер с настраиваемыми отступами и границами, чтобы создать иллюзию позиционирования.

SnackBar(content: Container(
  //color: Colors.white,
  decoration: BoxDecoration(color: Colors.white, border: Border.all(width: 2.0, color: Colors.black), borderRadius: BorderRadius.circular(20)),
  margin: EdgeInsets.fromLTRB(0, 0, 0, 75),
  child: Padding(
    padding: const EdgeInsets.all(8.0),
    child: Text('Yay! A SnackBar!'),
  ),
), backgroundColor: Colors.transparent, elevation: 1000, behavior: SnackBarBehavior.floating,);
person K Vij    schedule 24.04.2020


К сожалению нет. Но вы можете использовать https://api.flutter.dev/flutter/widgets/Overlay-class.html, чтобы отобразить виджет поверх другого виджета (в вашем случае, помимо виджета всплывающей подсказки) и создать виджет, аналогичный виджету Snackbar.

person Sahandevs    schedule 18.09.2019

Вы можете использовать Flushbar вместо SnackBar.

проверьте это для более подробной информации

панель смыва

person Alex you    schedule 04.08.2020

Работает для меня:

Вы можете обернуть контейнер средством «Выровнять».

SnackBar(
    content: GestureDetector(
      onTap: () {
        controller?.close();
      },
      child: Align(
        alignment: Alignment.topCenter,
        child: Container( ........
person IvanPavliuk    schedule 11.12.2020