Flutter中的浮动按钮 FloatingActionButton

港控/mmm° 2021-11-17 11:08 686阅读 0赞

FloatingActionButton 简称 FAB ,可以实现浮动按钮,也可以实现类似闲鱼 app 的底部凸起导航 。

常用属性

FloatingActionButton的常用属性,同flutter中其他按钮的常用属性大部分相同,但是也有特殊的:

  • child :子视图,一般为 Icon,不推荐使用文字
  • tooltip FAB: 被长按时显示,也是无障碍功能
  • backgroundColor: 背景颜色
  • elevation :未点击的时候的阴影
  • hignlightElevation :点击时阴影值,默认 12.0
  • onPressed :点击事件回调
  • shape :可以定义 FAB 的形状等
  • mini: 是否是 mini 类型默认 false

基本使用

  1. import 'package:flutter/material.dart';
  2. void main(){ runApp(MyApp());}
  3. class MyApp extends StatelessWidget{
  4. @override
  5. Widget build(BuildContext context) {
  6. return MaterialApp(
  7. home:Scaffold(
  8. appBar: AppBar(
  9. title:Text("flutter demo")
  10. ),
  11. floatingActionButton: FloatingActionButton(
  12. child: Icon(Icons.add),
  13. onPressed: (){
  14. print('FloatingActionButton');
  15. },
  16. ),
  17. body:HomeContent()
  18. )
  19. );
  20. }
  21. }
  22. class HomeContent extends StatelessWidget{
  23. @override
  24. Widget build(BuildContext context) {
  25. return Column(
  26. mainAxisAlignment: MainAxisAlignment.center,
  27. children: <Widget>[],
  28. );
  29. }
  30. }

默认情况下,会在页面的右下角生成一个蓝色的浮动按钮,我们可以在此基础上,对颜色、位置等属性进行相应的修改:

1304208-20190619205125807-2127356873.png 1304208-20190619205143547-1520272668.png

FloatingActionButton与bottomNavigationBar的结合

通过FloatingActionButton与bottomNavigationBar的结合,我们可以实现类似闲鱼App的底部导航:

要实现上面的效果,有需要需要在前面的基础上添加bottomNavigationBar:

  1. import 'package:flutter/material.dart';
  2. void main(){ runApp(MyApp());}
  3. class MyApp extends StatelessWidget{
  4. @override
  5. Widget build(BuildContext context) {
  6. return MaterialApp(
  7. home:Scaffold(
  8. appBar: AppBar(
  9. title:Text("flutter demo")
  10. ),
  11. floatingActionButton: FloatingActionButton(
  12. child: Icon(Icons.add,color: Colors.black,size: 40,),
  13. onPressed: (){
  14. print('FloatingActionButton');
  15. },
  16. backgroundColor: Colors.yellow
  17. ),
  18. floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
  19. body: Text("tabBar"),
  20. bottomNavigationBar: BottomNavigationBar(
  21. items: [
  22. BottomNavigationBarItem(
  23. icon: Icon(Icons.home),
  24. title: Text("首页")
  25. ),
  26. BottomNavigationBarItem(
  27. icon: Icon(Icons.category),
  28. title: Text("分类")
  29. ),
  30. BottomNavigationBarItem(
  31. icon: Icon(Icons.settings),
  32. title: Text("设置")
  33. )
  34. ],
  35. ),
  36. )
  37. );
  38. }
  39. }

1304208-20190619210751329-1962560425.png

此时,浮动按钮是在bottomNavigationBar的上面的,因此,我们可以改动浮动按钮的位置,使效果更贴近理想效果:
1304208-20190619210952734-1504116817.png

1304208-20190619211041626-94926874.png

现在,稍微好了一点,但是还没有达到理想的效果,既然位置改变不了,那么,可以通过改变大小,实现视觉的效果,前面说过,要想调节按钮的大小,需要在按钮的外层套一个Container,然后改变它的大小:

1304208-20190619211345743-1863694145.png1304208-20190619211525777-259494171.png

这个按钮和外面的Container是一样大的,但是在闲鱼App里面,按钮的外层是还有一圈白色边框的,也就是需要将Container设置为白色,并留出间距:

1304208-20190619211945954-1279424666.png

1304208-20190619212139012-1315170170.png

现在效果实现了,还可以结合之前的bottomNavigationBar,在浮动按钮上添加相应的功能:

1304208-20190619212606740-1490701329.png

代码下载:点这里(提取码:axmg)

转载于:https://www.cnblogs.com/yuyujuan/p/11054770.html

发表评论

表情:
评论列表 (有 0 条评论,686人围观)

还没有评论,来说两句吧...

相关阅读