summaryrefslogtreecommitdiffstats
path: root/lib/data/models/radio_state.dart
blob: da972fd01b185aadf22801d0fafc48dd261394d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import 'dart:convert';

import 'package:flutter_ics_homescreen/export.dart';

@immutable
class RadioState {
  final int freqMin;
  final int freqMax;
  final int freqStep;
  final int freqCurrent;
  final bool playing;
  final bool scanning;
  const RadioState(
      {required this.freqMin,
      required this.freqMax,
      required this.freqStep,
      required this.freqCurrent,
      required this.playing,
      required this.scanning});

  const RadioState.initial()
      : freqMin = 8790000,
        freqMax = 1083000,
        freqStep = 20000,
        freqCurrent = 8790000,
        playing = false,
        scanning = false;

  RadioState copyWith(
      {int? freqMin,
      int? freqMax,
      int? freqStep,
      int? freqCurrent,
      bool? playing,
      bool? scanning}) {
    return RadioState(
      freqMin: freqMin ?? this.freqMin,
      freqMax: freqMax ?? this.freqMax,
      freqStep: freqStep ?? this.freqStep,
      freqCurrent: freqCurrent ?? this.freqCurrent,
      playing: playing ?? this.playing,
      scanning: scanning ?? this.scanning,
    );
  }

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;

    return other is RadioState &&
        other.freqMin == freqMin &&
        other.freqMax == freqMax &&
        other.freqStep == freqStep &&
        other.freqCurrent == freqCurrent &&
        other.playing == playing &&
        other.scanning == scanning;
  }

  @override
  int get hashCode {
    return freqMin.hashCode ^
        freqMax.hashCode ^
        freqStep.hashCode ^
        freqCurrent.hashCode ^
        playing.hashCode ^
        scanning.hashCode;
  }
}