flutter_sliver_tracker 2.0.7 copy "flutter_sliver_tracker: ^2.0.7" to clipboard
flutter_sliver_tracker: ^2.0.7 copied to clipboard

outdated

flutter_sliver_tracker is a plugin helping to track ScrollUpdate event from sliver children. Sliver children can receive constraints and geometry when position is updated.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_sliver_tracker/flutter_sliver_tracker.dart';
import 'dart:math';

import 'SliverToBoxAdapterDemo.dart';
import 'SliverToBoxAdapterDebounceDemo.dart';
import 'SliverMultiBoxScrollListenerDemo.dart';
import 'SliverMultiBoxScrollListenerDebounceDemo.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SliverListenerDemo',
      theme: ThemeData(
          primarySwatch: Colors.blue,
          textTheme: TextTheme(
            button: TextStyle(fontSize: 30),
            display1: TextStyle(fontSize: 40),
            display2: TextStyle(fontSize: 40),
            display3: TextStyle(fontSize: 40),
            display4: TextStyle(fontSize: 40),
            headline: TextStyle(fontSize: 40),
            title: TextStyle(fontSize: 40),
            subhead: TextStyle(fontSize: 40),
            body1: TextStyle(fontSize: 20, color: Colors.white),
          )
      ),
      home: MyHomePage(title: 'flutter_sliver_tracker demo'),
      routes: {
        "SliverToBoxAdapterDemo": (_) => SliverToBoxAdapterDemo(),
        "SliverToBoxAdapterDebounceDemo": (_) => SliverToBoxAdapterDebounceDemo(),
        "SliverMultiBoxScrollListenerDemo": (_) => SliverMultiBoxScrollListenerDemo(),
        "SliverMultiBoxScrollListenerDebounceDemo": (_) => SliverMultiBoxScrollListenerDebounceDemo(),
      },
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  Widget _button(String text, VoidCallback onTap) {
    return GestureDetector(
        onTap: onTap,
        child: Container(
          color: Colors.amber[500 + 100 * Random().nextInt(4)],
          height: 50,
          child: Center(
            child: Text(text),
          ),
        )
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: ScrollViewListener(
        child: CustomScrollView(
          scrollDirection: Axis.vertical,
          slivers: <Widget>[
            SliverToBoxAdapter(
              child: Container(
                color: Colors.blue,
                padding: EdgeInsets.all(10),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text("滑动曝光埋点用于滑动列表组件中的模块曝光,例如 Flutter 中的 SliverList、SliverGrid。"
                    "当 SliverList 中的某一个行(或列)移动到 ViewPort 中,并且显示比例超过一定阈值时,"
                        "我们把这个事件记为一次滑动曝光事件。"),
                    Container(height: 50,),
                    Text("目前 flutter_sliver_tracker 支持 SliverList 以及 SliverGrid。"),
                    Container(height: 15,),
                  ],
                ),
              ),
            ),
            SliverList(
              delegate: SliverChildListDelegate(
                [
                  _button(
                      'SliverToBoxAdapter Demo',
                          () {
                        Navigator.of(context).pushNamed("SliverToBoxAdapterDemo");
                      }
                  ),
                  _button(
                      'SliverToBoxAdapterDebounce Demo',
                          () {
                        Navigator.of(context).pushNamed("SliverToBoxAdapterDebounceDemo");
                      }
                  ),
                  _button(
                      'SliverMultiBoxScrollListener Demo',
                          () {
                        Navigator.of(context).pushNamed("SliverMultiBoxScrollListenerDemo");
                      }
                  ),
                  _button(
                      'SliverMultiBoxScrollListenerDebounce Demo',
                          () {
                        Navigator.of(context).pushNamed("SliverMultiBoxScrollListenerDebounceDemo");
                      }
                  ),
                ],
              ),
            ),
          ],
        ),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
8
likes
35
pub points
31%
popularity

Publisher

unverified uploader

flutter_sliver_tracker is a plugin helping to track ScrollUpdate event from sliver children. Sliver children can receive constraints and geometry when position is updated.

Repository (GitHub)
View/report issues

License

BSD-2-Clause (LICENSE)

Dependencies

flutter

More

Packages that depend on flutter_sliver_tracker