register method

GlassContentAwareSubscription register({
  1. required RenderBox? controlBox(),
  2. required ValueChanged<Brightness> onBrightnessChanged,
  3. required Brightness initialBrightness,
  4. int gridColumns = 6,
  5. int gridRows = 1,
})

Registers a glass control to receive content-aware verdicts.

controlBox returns the control's render box at sample time (or null while it is unmounted — the control is skipped for that sample). The control's rectangle is divided into gridColumns × gridRows voting cells — 6×1 suits wide bars; a compact button would use a square grid. onBrightnessChanged fires only when the verdict actually flips; initialBrightness seeds the hysteresis state.

Call GlassContentAwareSubscription.cancel when the control goes away.

Implementation

GlassContentAwareSubscription register({
  required RenderBox? Function() controlBox,
  required ValueChanged<Brightness> onBrightnessChanged,
  required Brightness initialBrightness,
  int gridColumns = 6,
  int gridRows = 1,
}) {
  assert(gridColumns > 0 && gridRows > 0, 'Grid must have at least 1 cell');
  final sub = GlassContentAwareSubscription._(
    this,
    controlBox,
    onBrightnessChanged,
    gridColumns,
    gridRows,
    initialBrightness,
  );
  _subscriptions.add(sub);
  requestSample();
  return sub;
}