Flutter中FloatingActionButton定位问题:设置body为Center后FAB也居中如何解决
问题原因分析
- 你大概率是将
FloatingActionButton组件写在了Scaffold的body参数内部,body返回的Center组件会将内部所有子元素居中对齐,所以按钮才会跟着页面内容一起居中 - 用
Padding硬调位置的方案本身就不符合Flutter的布局规范,适配不同尺寸的设备时很容易出现UI错乱
正确解决方案
你只需要调整FloatingActionButton的挂载位置即可:
- 不要把
FloatingActionButton放在Scaffold的body中 - 将
FloatingActionButton赋值给Scaffold的floatingActionButton专属属性,Scaffold会自动将按钮定位在页面右下角的默认位置,完全不会受body内部布局的影响
示例代码结构参考:
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("示例应用")), // body仅放置页面主内容 body: const Center( child: Text("你要展示的页面内容"), ), // 悬浮按钮单独赋值给floatingActionButton参数 floatingActionButton: FloatingActionButton( onPressed: () {}, child: const Icon(Icons.add), ), ); }
可选调整项
如果需要修改悬浮按钮的默认位置,可以通过调整Scaffold的floatingActionButtonLocation参数实现,系统预置了多种位置配置可选,比如FloatingActionButtonLocation.centerFloat是底部居中悬浮、FloatingActionButtonLocation.endDocked是右下角贴边停靠等,无需自行编写padding调整。
内容的提问来源于stack exchange,提问作者Logic
相关产品推荐
相关产品推荐

