Scheduler callbacks receive the scheduler's live state object under this
type: mutating it is forbidden (it would desynchronise the loop), and the
type makes an attempt a compile error. The object is deliberately notObject.freezed — the scheduler must keep mutating that same instance every
frame, and freezing would force a fresh allocation per frame in the hot path
(plan D7 allocation policy). Consumers that need to retain a value across
frames must copy it with copyTimeState.
A
TimeStateas consumers see it.Scheduler callbacks receive the scheduler's live state object under this type: mutating it is forbidden (it would desynchronise the loop), and the type makes an attempt a compile error. The object is deliberately not
Object.freezed — the scheduler must keep mutating that same instance every frame, and freezing would force a fresh allocation per frame in the hot path (plan D7 allocation policy). Consumers that need to retain a value across frames must copy it with copyTimeState.