Flutter's StandardMethodCodec encodes Dart ints that fit in 32 bits as Java Integer, not Long. scheduleAlarm sends preNoticeAtMillis=0 when rescheduling a snooze, which crashed the unchecked argument<Long>() cast. Read all millis args as Number and convert with toLong().