import 'dart:math';
import 'package:flutter/material.dart';
main() => runApp(DBJApp());
class DBJApp extends StatelessWidget {
const DBJApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'hello world',
home: DBJHomeBody(),
);
}
}
class DBJHomeBody extends StatefulWidget {
const DBJHomeBody({Key? key}) : super(key: key);
@override
_DBJHomeBodyState createState() => _DBJHomeBodyState();
}
class _DBJHomeBodyState extends State<DBJHomeBody> {
ScrollController _controller = ScrollController(initialScrollOffset: 0);
bool _isShowFloatingBtn = false;
@override
void initState() {
super.initState();
_controller.addListener(() {
print('监测到滚动 ${_controller.offset}');
setState(() {
_isShowFloatingBtn = _controller.offset >= 1000;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('列表滚动监听'),
),
body: ListView.builder(
itemBuilder: (context, index) {
return ListTile(
leading: Icon(
Icons.people,
color: Colors.green,
),
title: Text('hello world $index'),
trailing: Icon(
Icons.keyboard_arrow_right_rounded,
color: Colors.orange,
),
);
},
controller: _controller,
itemCount: 140,
),
floatingActionButton: _isShowFloatingBtn
? FloatingActionButton(
child: Icon(Icons.arrow_upward),
onPressed: () {
_controller.animateTo(0, duration: Duration(seconds: 1), curve: Curves.easeIn);
print('FloatingActionButton');
})
: null,
// floatingActionButton: FloatingActionButton(),
);
}
}

Simulator Screen Shot - iPhone 12 - 2021-09-02 at 17.19.13.png
网友评论