setFakeNow function

void setFakeNow(
  1. DateTime? fakeNow, {
  2. bool persist = true,
  3. bool elapse = false,
})

Set a fake time that now will return. Set to null to return to real time again.

If persist is set to true, it is persisted between restarts by saving the time to LocalConfig.

If elapse is set to true, the time returned from now will be fakeNow plus the elapsed time since this function was executed. This allows for syncing time to say, a remote server.

Warning: Using elapse set to true in combination with persist set to true will result in only fakeNow being persisted, causing the value loaded on app restart to be exactly fakeNow and not any time that has elapsed after it was saved.

Implementation

void setFakeNow(
  DateTime? fakeNow, {
  bool persist = true,
  bool elapse = false,
}) {
  _now = fakeNow;

  if (elapse) {
    _fakeTimeElapsedSince
      ..reset()
      ..start();
  } else {
    _fakeTimeElapsedSince.stop();
  }

  if (persist) {
    if (fakeNow == null) {
      getApp().localConfig.reset(_kFakeNowLocalConfigKey);
    } else {
      getApp().localConfig.setString(
          _kFakeNowLocalConfigKey, fakeNow.toUTCIso8601StringNoMSUS());
    }
  }

  _fakeNowStreamController.add(fakeNow);
}