Flutter懸浮按鈕FloatingActionButton使用詳解
1、普通用法
floatingActionButton: FloatingActionButton( child: Icon(Icons.add), onPressed: (){ print('不要啊~'); }, ),
2、修改懸浮按鈕位置
繼承FloatingActionButtonLocation類,重寫對應方法自定義位置
import 'package:flutter/material.dart'; class CustomFloatingActionButtonLocation extends FloatingActionButtonLocation { FloatingActionButtonLocation location; double offsetX; // X方向的偏移量 double offsetY; // Y方向的偏移量 CustomFloatingActionButtonLocation(this.location, this.offsetX, this.offsetY); @override Offset getOffset(ScaffoldPrelayoutGeometry scaffoldGeometry) { Offset offset = location.getOffset(scaffoldGeometry); return Offset(offset.dx + offsetX, offset.dy + offsetY); } }
使用
floatingActionButtonLocation:CustomFloatingActionButtonLocation( FloatingActionButtonLocation.endFloat, 0, -DpUtils.setWidth(20)),
3、修改懸浮按鈕大小
floatingActionButton: SizedBox( height: 100.0, width: 100.0, child:FloatingActionButton( child: Icon(Icons.add), onPressed: () {}, ), ),
4、去除懸浮按鈕切換動畫
繼承FloatingActionButtonAnimator類並重寫對應的方法
import 'package:flutter/material.dart'; class NoScalingAnimation extends FloatingActionButtonAnimator{ double _x; double _y; @override Offset getOffset({Offset begin, Offset end, double progress}) { _x = begin.dx +(end.dx - begin.dx)*progress ; _y = begin.dy +(end.dy - begin.dy)*progress; return Offset(_x,_y); } @override Animation<double> getRotationAnimation({Animation<double> parent}) { return Tween<double>(begin: 1.0, end: 1.0).animate(parent); } @override Animation<double> getScaleAnimation({Animation<double> parent}) { return Tween<double>(begin: 1.0, end: 1.0).animate(parent); } }
使用
floatingActionButtonAnimator: NoScalingAnimation(),
5、一般的自定義懸浮按鈕樣式
@override Widget build(BuildContext context) { return Scaffold( floatingActionButton: FloatingActionButton( child: Container( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Image.asset( "images/float_button.png", width: DpUtils.setWidth(32), height: DpUtils.setWidth(32), ), Text( "懸浮按鈕", style: TextStyle(fontWeight: FontWeight.bold, fontSize: DpUtils.setSp(20), color: Colors.white), ), ], ), ), elevation: 0, onPressed: () { _doSome(); }, backgroundColor: Colors.black, heroTag: "floatHome", ), ) )}
6、徹底的自定義懸浮按鈕樣式
其實,floatingActionButton 可以直接傳入普通的widget。所以該幹嘛幹嘛咯
@override Widget build(BuildContext context) { return Scaffold( floatingActionButton: Container( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Image.asset( "images/home_icon_publishing.png", width: DpUtils.setWidth(32), height: DpUtils.setWidth(32), ), Text( "發主題", style: TextStyle(fontWeight: FontWeight.bold, fontSize: DpUtils.setSp(20), color: Colors.white), ), ], ), ), ); }
到此這篇關於Flutter懸浮按鈕FloatingActionButton使用詳解的文章就介紹到這瞭,更多相關Flutter懸浮按鈕FloatingActionButton內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Flutter實現自定義篩選框的示例代碼
- 詳解Android Flutter如何自定義動畫路由
- Flutter Component動畫的顯和隱最佳實踐
- Android Flutter制作一個修改組件屬性的動畫
- 在Flutter中制作翻轉卡片動畫的完整實例代碼