zeba_academy_visibility 0.0.1
zeba_academy_visibility: ^0.0.1 copied to clipboard
A lightweight Flutter visibility detection package with fade, slide animations, and visibility percentage tracking.
π zeba_academy_visibility β README.md π¦ Package Name
zeba_academy_visibility
π Description
A lightweight Flutter package for detecting widget visibility inside scroll views with:
Visibility percentage tracking Fade & slide animations on visibility Once-only trigger support Smooth scroll-based detection β¨ Features
β Visibility detection inside scroll views β Visibility percentage (0.0 β 1.0) β Fade animation support β Slide animation support β Once-only visibility trigger β Lightweight & performance friendly β Easy integration in any Flutter app
π Installation
Add dependency in pubspec.yaml:
dependencies: zeba_academy_visibility: ^0.0.1
Then run:
flutter pub get π§ Basic Usage ποΈ Visibility Detection import 'package:flutter/material.dart'; import 'package:zeba_academy_visibility/zeba_academy_visibility.dart';
class ExamplePage extends StatelessWidget { final controller = VisibilityController();
ExamplePage({super.key});
@override Widget build(BuildContext context) { return Scaffold( body: ListView( children: [ ZebaVisibilityDetector( controller: controller, visibilityThreshold: 0.5, onVisibilityChanged: (isVisible, fraction) { debugPrint("Visible: $isVisible | $fraction"); }, child: Container( height: 200, color: Colors.blue, child: const Center( child: Text( "Hello Visibility", style: TextStyle(color: Colors.white), ), ), ), ), ], ), ); } } π¬ Fade Animation ZebaFadeVisibility( isVisible: true, child: Container( height: 150, color: Colors.green, child: const Center( child: Text("Fade In"), ), ), ) ποΈ Slide Animation ZebaSlideVisibility( isVisible: true, beginOffset: Offset(0, 0.3), child: Container( height: 150, color: Colors.orange, child: const Center( child: Text("Slide In"), ), ), ) π Once Only Trigger final controller = VisibilityController();
if (controller.hasBeenVisible) { debugPrint("Widget already visible once"); } π Visibility Properties Property Description isVisible Current visibility state visibleFraction Visibility percentage (0.0 - 1.0) hasBeenVisible True once widget is seen βοΈ How It Works Detects widget position on screen Compares with viewport bounds Calculates visible portion Converts to percentage Triggers updates via controller π Package Structure lib/ βββ zeba_academy_visibility.dart βββ src/ β βββ visibility_detector_widget.dart β βββ visibility_builder.dart β βββ visibility_controller.dart β βββ animation/ β β βββ fade_visibility.dart β β βββ slide_visibility.dart β‘ Use Cases Scroll-based animations Content engagement tracking Feed-style UI (Instagram-like apps) Learning apps (Zeba Academy use case) Lazy animation loading π§ͺ Example App
See /example folder for full working demo.
π License
This package is licensed under:
GNU General Public License v3.0 (GPL-3.0)
You are free to:
Use Modify Distribute
But any modified version must remain open-source under GPL-3.0.
π¨βπ» About Developer
β¨ Sufyan bin Uzayr Open-source developer passionate about building useful Flutter tools.
π https://sufyanism.com π https://www.linkedin.com/in/sufyanism
π Zeba Academy
π Learn coding & development at:
https://zeba.academy https://code.zeba.academy https://www.youtube.com/@zeba.academy https://www.instagram.com/zeba.academy π Final Note
If you like this package, consider β starring the repo and contributing.