flutter - FloatingActionButton 上下滚动
问题描述
朋友 我希望在浮动操作按钮中上下滚动页面时浮动操作按钮滑动,我应该使用哪个小部件?
我的代码
FloatingActionButton.extended(
onPressed: () {
print("hello world");
},
label: const Text('Update',style: TextStyle(color: Colors.white),),
icon: const Icon(Icons.update_outlined,color: Colors.white,),
backgroundColor: Colors.blue,
// foregroundColor: Text(Colors.white),
),
解决方案
让我们试试,这里我们使用NotificationListener
. 在 的帮助下NotificationListener
,我们获取屏幕信息,当开始向上或向下滚动时,我们更改FloatingActionButtonLocation
.
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(debugShowCheckedModeBanner: false, home: MyHomePage()));
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
Key key,
}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ScrollController _scrollController = ScrollController();
FloatingActionButtonLocation _floatingActionButtonLocation =
FloatingActionButtonLocation.endFloat;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
floatingActionButton: FloatingActionButton(
child: Text("test"),
),
floatingActionButtonLocation: _floatingActionButtonLocation,
body: Container(
child: NotificationListener(
onNotification: (ScrollNotification scrollInfo) {
setState(() {
if (scrollInfo.metrics.pixels > 0.0) { // here you change the condition
_floatingActionButtonLocation =
FloatingActionButtonLocation.endTop;
} else {
_floatingActionButtonLocation =
FloatingActionButtonLocation.endFloat;
}
});
return true;
},
child: ListView(
children: [
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
SizedBox(
height: 500,
),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
Text("data"),
],
),
),
),
),
);
}
}
推荐阅读
- php - 更新mac os后为docker构建php-fpm时phpize失败
- python - 'read_csv' 数据的内存与原始数据的内存不同
- reactjs - 在 React 中使用 .map() 内的函数无法正常工作
- javascript - 传递反应道具时如何忽略打字稿短绒错误/警告“没有重载匹配此调用”
- angular - 如果 'router-outlet' 是一个 Angular 组件,那么验证它是这个模块的一部分。角 12
- java - 如何在eclipse中创建一个简单的Restful Web services?
- docker - PUSH 和 PULL 后未在容器映像中设置环境变量
- html - 如何在Vue.js中的v-for之后使用first:child和last:child?
- javascript - 比较asp.net表单中2个文本框的第一个字母
- android - 如何从适配器调用 OnRequestPermissionResult 方法