Flutter

Flutter(二十七)ScrollController滚动监听

2019-07-19  本文已影响2人  天色将变

用于对ListView等列表的监听和偏移控制

构造方法

ScrollController({
double initialScrollOffset = 0.0,// 初始的偏移量
this.keepScrollOffset = true,//是否保存滚动位置
this.debugLabel,
})

常用方法
image.png
class _MyHomePageState extends State<MyHomePage> {
  ScrollController controller = new ScrollController();
  bool show = false;
  @override
  void initState() {
    super.initState();
    controller.addListener(() {
      if (controller.offset > 1000 && !show) {
        setState(() {
          show = true;
        });
      } else if (controller.offset <= 1000 && show) {
        setState(() {
          show = false;
        });
      }
    });
  }

  @override
  void dispose() {
    super.dispose();
    controller.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: ConstrainedBox(
        constraints: BoxConstraints.expand(),
        child: ListView.builder(
          itemBuilder: (BuildContext context, int index) {
            return ListTile(
              title: Text('$index'),
            );
          },
          itemCount: 100,
          itemExtent: 50,
          controller: controller,
        ),
      ),
      floatingActionButton: !show
          ? null
          : FloatingActionButton(
              onPressed: () {
//                controller.animateTo(0,
//                    duration: Duration(seconds: 1), curve: Curves.bounceInOut);
                controller.jumpTo(33);
              },
              child: Icon(Icons.arrow_drop_up),
            ),
    );
  }
}
上一篇 下一篇

猜你喜欢

热点阅读