如何设置快餐栏和浮动操作按钮之间的距离?

时间:2019-10-11 23:34:57

标签: flutter floating-action-button snackbar

如何设置小吃栏和浮动操作按钮之间的距离?

screenshot

5 个答案:

答案 0 :(得分:0)

你不能设置它!它等于从底部开始加上SnackBar的高度。

但是如果要调整它,则可以不使用Scaffold中的FAB,而是将主体设为Stack,最新的一层是FAB,并将其包装在{{1}中},因此可以根据需要从底部到底部适当距离为其设置动画。

答案 1 :(得分:0)

您尝试过

floatingActionButton: Column(mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end, children: [
  FloatingActionButton(
    onPressed: _doOrder,
    mini: false,
    elevation: 10,
    child: Icon(EvaIcons.shoppingBagOutline),
  ),
  Container(
    height: 50,
  )
]),

答案 2 :(得分:0)

如果您希望ListBox始终具有底部填充,则可以使用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的行为属性设置为{{1 }}

SnackBarBehavior

  

floating→const SnackBarBehavior此行为将导致SnackBar   显示在脚手架中其他小部件的上方。这包括被   显示在BottomNavigationBar和FloatingActionButton上方。

答案 3 :(得分:0)

尝试设置:行为:SnackBarBehavior.floating 可能有效

SnackBar(behavior: SnackBarBehavior.floating, content: Padding(child: Text(message),
          padding: EdgeInsets.only(bottom: 30),)));

答案 4 :(得分:0)

您可以使用钥匙将快餐栏连接到支架上。

例如:-

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

void showSnackBar(String text) {
    _scaffoldKey.currentState.showSnackBar(SnackBar(
      content: Text(
        text,
        textAlign: TextAlign.center,
      ),
      duration: Duration(seconds: 0, milliseconds: 750),
    ));
  }

然后将密钥添加到支架:

Scaffold(
      key: _scaffoldKey,
      ...
);

您现在可以从任何地方调用此功能。