установить переменную с условиями в дротике - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть MyDateTime класс, и у него есть переменная hour. Мне нужно установить эту переменную с некоторым условием, когда я создаю объект. Например, у меня есть этот объект:
MyDateTime dt = MyDateTime(2020, 2, 3, 3, 2);

Теперь мне нужно увеличить hour т.е. dt.hour++;

мой вопрос, как я могу изменить hour из объект без добавления новых функций, в то же время мне нужно увеличить hour с условием


class MyDateTime {
  int year;
  int month;
  int day;
  int hour;
  int minute;
  int second;

  MyDateTime({this.year, this.month, this.day ,this.hour=0, this.minute=0, this.second=0});
  // this is the condition
  set addHour(int h){
    if(this.hour == 23) this.hour = 0;
    else if(this.hour == 0) this.hour = 1;
    else this.hour++;
  }



}

Я не хочу иметь функцию (например: addHour)

Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

Для этой цели вы можете использовать пользовательский установщик:

class MyDateTime {
  int year;
  int month;
  int day;
  int _hour;
  int minute;
  int second;

  MyDateTime({this.year, this.month, this.day, int hour=0, this.minute=0, this.second=0}) : _hour = hour;


  // this is the condition
  set hour(int h) => _hour = h % 24;

  // We need to define a custom getter as well.
  int get hour => _hour;
}

Затем вы можете сделать следующее:

main() {
  final dt = MyDateTime();
  print(dt.hour); // 0
  print(++dt.hour); // 1
  dt.hour += 2;
  print(dt.hour); // 3 
}
0 голосов
/ 04 февраля 2020
  1. Для автоматического приращения:
    Просмотрите Timer, что позволит автоматически увеличивать hour после определенного Duration
    https://fluttermaster.com/tips-to-use-timer-in-dart-and-flutter/
  2. Для добавления условий к вашему приращению:
    Если вы не хотите продолжать вызывать функцию для увеличения вашей переменной hour, вам придется добавить какой-то слушатель переменной hour, посмотрите на следующий пакет:

    property_change_notifier: https://pub.dev/packages/property_change_notifier

    Добавление Слушатель hour поможет вам определить функцию, например, функцию addHour(), которая будет автоматически вызываться при изменении значения hour.

    ИЛИ Вы можете добавить условия для приращения внутри самого Timer.
...