adv_cubit.dart 1007 Bytes
import 'dart:async';

import 'package:appframe/config/routes.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class AdvState extends Equatable {
  final int countdown;

  const AdvState({this.countdown = 5});

  AdvState copyWith({
    int? countdown,
  }) {
    return AdvState(
      countdown: countdown ?? this.countdown,
    );
  }

  @override
  List<Object?> get props => [countdown];
}

class AdvCubit extends Cubit<AdvState> {
  Timer? _timer;

  AdvCubit() : super(AdvState()) {
    _startCountdown();
  }

  void _startCountdown() {
    var count = state.countdown;
    _timer = Timer.periodic(Duration(seconds: 1), (timer) {
      count--;
      if (count <= 0) {
        _timer?.cancel();
        router.go('/web');
      } else {
        emit(state.copyWith(countdown: count));
      }
    });
  }

  @override
  Future<void> close() {
    try {
      _timer?.cancel();
    } catch (e) {
      print(e);
    }
    return super.close();
  }
}