schedule_badge_updates 0.0.2

Flutter Android iOS

Allow scheduling badge updates on app icons.

example/lib/main.dart

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

import 'package:flutter/services.dart';
import 'package:schedule_badge_updates/schedule_badge_updates.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _badgeSupported = 'Not set';

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

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    String badgeSupported;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      ScheduleBadgeUpdates.setBadge(6);

      // Badges: 6 -> 8 -> 66 -> none
      // 666 should never show

      // This should be shown
      print(await ScheduleBadgeUpdates.scheduleBadge(8, DateTime.now().add(Duration(seconds: 5))));
      // But this should be canceled
      String res = await ScheduleBadgeUpdates.scheduleBadge(666, DateTime.now().add(Duration(seconds: 7)));
      print(res);
      print(await ScheduleBadgeUpdates.unscheduleBadgeUpdates([res]));
      
      bool isBadge = await ScheduleBadgeUpdates.isBadgeSupported();
      if (!isBadge) {
        badgeSupported = 'Not supported';
      }
      else {
        badgeSupported = 'YASS!!!';
      }

      // This should show
      print(await ScheduleBadgeUpdates.scheduleBadge(66, DateTime.now().add(Duration(seconds: 10))));
      // This should be canceled
      print(await ScheduleBadgeUpdates.scheduleBadge(666, DateTime.now().add(Duration(seconds: 15))));
      // By this
      Timer(Duration(seconds: 12), () async => await ScheduleBadgeUpdates.unscheduleAllBadgeUpdates());
      // And eventually all disappears
      Timer(Duration(seconds: 20), () async => await ScheduleBadgeUpdates.clearBadge());

    } on PlatformException {
      badgeSupported = 'Failed to get platform version.';
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _badgeSupported = badgeSupported;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text('Running on: $_badgeSupported\n'),
        ),
      ),
    );
  }
}
0
likes
70
pub points
0%
popularity

Allow scheduling badge updates on app icons.

Homepage

Documentation

API reference

Uploader

jhsware@gmail.com

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on schedule_badge_updates