Flutter - Hiding FloatingActionButton

前端 未结 7 1668
悲哀的现实
悲哀的现实 2020-12-13 18:18

Is there any built in way in Flutter to hide a FloatingActionButton on ListView scrolling down and then showing it on scrolling up?

相关标签:
7条回答
  • 2020-12-13 18:49

    A good way to do it...

    import 'package:flutter/material.dart';
    import 'package:flutter/rendering.dart';
    
    class Home extends StatefulWidget {
      @override
      _HomeState createState() => _HomeState();
    }
    
    class _HomeState extends State<Home> {
      ScrollController controller;
      bool fabIsVisible = true;
    
      @override
      void initState() {
        super.initState();
        controller = ScrollController();
        controller.addListener(() {
          setState(() {
            fabIsVisible =
                controller.position.userScrollDirection == ScrollDirection.forward;
          });
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: ListView(
            controller: controller,
            children: List.generate(
                100,
                (index) => ListTile(
                      title: Text("Text $index"),
                    )),
          ),
          floatingActionButton: AnimatedOpacity(
            child: FloatingActionButton(
              child: Icon(Icons.add),
              tooltip: "Increment",
              onPressed: () {
                print("Pressed");
              },
            ),
            duration: Duration(milliseconds: 100),
            opacity: fabIsVisible ? 1 : 0,
          ),
        );
      }
    }
    
    0 讨论(0)
提交回复
热议问题