zeba_academy_behavior_tracker 1.0.0 copy "zeba_academy_behavior_tracker: ^1.0.0" to clipboard
zeba_academy_behavior_tracker: ^1.0.0 copied to clipboard

AI-driven student behavior analytics engine with session tracking, engagement scoring, focus pattern detection, and usage heatmap generation for Flutter EdTech apps.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:zeba_academy_behavior_tracker/zeba_academy_behavior_tracker.dart';

void main() {
  runApp(const BehaviorTrackerExampleApp());
}

class BehaviorTrackerExampleApp extends StatelessWidget {
  const BehaviorTrackerExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Behavior Tracker Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const DashboardPage(),
    );
  }
}

class DashboardPage extends StatefulWidget {
  const DashboardPage({super.key});

  @override
  State<DashboardPage> createState() => _DashboardPageState();
}

class _DashboardPageState extends State<DashboardPage> {
  late final List<StudySession> _sessions;
  late final ActivityAnalytics _analytics;
  late final EngagementCalculator _engagement;
  late final FocusAnalyzer _focus;
  late final HeatmapGenerator _heatmap;

  @override
  void initState() {
    super.initState();

    // Example sessions
    _sessions = [
      StudySession(
        startTime: DateTime.now().subtract(const Duration(hours: 4)),
        endTime: DateTime.now().subtract(const Duration(hours: 3, minutes: 20)),
        interactions: 40,
      ),
      StudySession(
        startTime: DateTime.now().subtract(const Duration(hours: 2)),
        endTime: DateTime.now().subtract(const Duration(hours: 1, minutes: 30)),
        interactions: 50,
      ),
      StudySession(
        startTime: DateTime.now().subtract(const Duration(minutes: 50)),
        endTime: DateTime.now(),
        interactions: 30,
      ),
    ];

    _analytics = ActivityAnalytics(_sessions);
    _engagement = EngagementCalculator(_sessions);
    _focus = FocusAnalyzer(_sessions);
    _heatmap = HeatmapGenerator(_sessions);
  }

  @override
  Widget build(BuildContext context) {
    final dailyMinutes = _analytics.dailyStudyMinutes();
    final heatmap = _heatmap.generateHourlyHeatmap();

    return Scaffold(
      appBar: AppBar(title: const Text('Behavior Tracker Dashboard')),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            _buildCard(
              title: 'Total Study Time',
              content:
              '${_analytics.totalStudyTime.inHours}h ${_analytics.totalStudyTime.inMinutes % 60}m',
            ),
            _buildCard(
              title: 'Engagement Score',
              content: _engagement.calculateScore().toStringAsFixed(1),
            ),
            _buildCard(
              title: 'Average Focus Duration',
              content: '${_focus.averageFocusDuration()} mins',
            ),
            const SizedBox(height: 20),
            const Text('Daily Study Minutes',
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            const SizedBox(height: 10),
            for (var entry in dailyMinutes.entries)
              Text(
                  '${entry.key.year}-${entry.key.month}-${entry.key.day}: ${entry.value} mins'),
            const SizedBox(height: 20),
            const Text('Hourly Heatmap',
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            const SizedBox(height: 10),
            _buildHeatmap(heatmap),
          ],
        ),
      ),
    );
  }

  Widget _buildCard({required String title, required String content}) {
    return Card(
      margin: const EdgeInsets.symmetric(vertical: 8),
      elevation: 3,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            Text(title, style: const TextStyle(fontSize: 16)),
            Text(content,
                style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
          ],
        ),
      ),
    );
  }

  Widget _buildHeatmap(Map<int, int> heatmap) {
    return SizedBox(
      height: 200,
      child: ListView.builder(
        scrollDirection: Axis.horizontal,
        itemCount: 24,
        itemBuilder: (context, index) {
          return Container(
              width: 25,
              margin: const EdgeInsets.symmetric(horizontal: 2),
            color: Colors.blue.withAlpha((0.5 * 255).toInt()),
            child: Center(
                  child: RotatedBox(
                      quarterTurns: -1, child: Text(index.toString(), style: const TextStyle(fontSize: 10, color: Colors.white)))),
          );
        },
      ),
    );
  }
}
0
likes
140
points
93
downloads
screenshot

Documentation

API reference

Publisher

verified publisherzeba.academy

Weekly Downloads

AI-driven student behavior analytics engine with session tracking, engagement scoring, focus pattern detection, and usage heatmap generation for Flutter EdTech apps.

Homepage

License

unknown (license)

Dependencies

collection

More

Packages that depend on zeba_academy_behavior_tracker