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

The flutter_streak Dart package provides a simple and flexible way to track user streaks in Flutter apps. It manages streak counts, contribution tracking, and daily progress while persisting data thro [...]

example/lib/example.dart

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

/// A simple in-memory delegate (no database, just stores in memory).
class MemoryDelegate extends StreakDelegate {
  Map<String, dynamic>? _store;

  @override
  Future<Map?> get() async => _store;

  @override
  Stream<Map?> listen() async* {
    yield _store;
  }

  @override
  Future<void> set(Map<String, dynamic> props) async {
    _store = props;
  }
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize streak system with in-memory delegate
  await Streak.init(delegate: MemoryDelegate());

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Streak Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const StreakPage(),
    );
  }
}

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

  @override
  State<StreakPage> createState() => _StreakPageState();
}

class _StreakPageState extends State<StreakPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Streak Example')),
      body: Center(
        child: ValueListenableBuilder<StreakData>(
          valueListenable: Streak.i,
          builder: (context, streak, _) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text(
                  "🔥 Current Streak: ${streak.count}",
                  style: const TextStyle(fontSize: 24),
                ),
                const SizedBox(height: 12),
                Text("Last updated: ${streak.time}"),
                const SizedBox(height: 24),
                ElevatedButton(
                  onPressed: () async {
                    await Streak.update();
                  },
                  child: const Text("Add Today"),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}
3
likes
140
points
28
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

The flutter_streak Dart package provides a simple and flexible way to track user streaks in Flutter apps. It manages streak counts, contribution tracking, and daily progress while persisting data through a delegate system.

Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

flutter

More

Packages that depend on flutter_streak