LogoSignals.dart
Copy Markdown
rodydavis/signals.dart 999999

useLazySignal

Creates a new Signal that starts uninitialized and subscribes to it.

Creates a new Signal that starts uninitialized and subscribes to it.

A lazy signal is a signal that doesn't have an initial value on creation. Reading its .value before setting it will throw a LazySignalInitializationError.

Ideal for binding late-initialized state, such as data fetched in a lifecycle effect or passed asynchronously from platform channels.

Parameters#

  • keys: A list of objects to watch. If any key changes, the signal is re-created.
  • options: Optional configuration options for standard signals (e.g. name, autoDispose).

Example#

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:signals_hooks/signals_hooks.dart';

class LateSetupWidget extends HookWidget {
  const LateSetupWidget({super.key});

  @override
  Widget build(BuildContext context) {
    // Starts uninitialized safely
    final dataSignal = useLazySignal<String>();

    useEffect(() {
      Future.delayed(const Duration(seconds: 1), () {
        dataSignal.value = 'Initialized Data';
      });
      return null;
    }, []);

    return Text(dataSignal.value.isEmpty ? 'Uninitialized' : dataSignal.value);
  }
}