LogoSignals.dart
Copy Markdown
rodydavis/signals.dart 999999

Type: useSetSignal

API reference and details for useSetSignal from signals.dart.

useSetSignal#

Kind: function  |  Package: package:signals_hooks

Function: useSetSignal#

SetSignal<T> useSetSignal(Set<T> value, {List<Object?> keys = const <Object>[], SetSignalOptions<T>? options})

Creates a new SetSignal and subscribes to it.

A SetSignal provides a reactive wrapper around a standard Dart Set. It tracks mutations (such as .add(), .remove(), .clear()) and automatically triggers rebuilds of the host HookWidget.

Useful for managing collections of unique items, like active filters, selected item IDs, or tagged items in a multi-select interface.

Parameters#

  • value: The initial set elements.
  • options: The options for the signal.
  • keys: A list of objects to watch. If any key changes, the set signal is re-created.

Example#

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

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

  @override
  Widget build(BuildContext context) {
    final selectedCategories = useSetSignal<String>({});

    void toggleCategory(String cat) {
      if (selectedCategories.contains(cat)) {
        selectedCategories.remove(cat);
      } else {
        selectedCategories.add(cat);
      }
    }

    return Row(
      children: ['Tech', 'News', 'Lifestyle'].map((cat) {
        final isSelected = selectedCategories.contains(cat);
        return FilterChip(
          label: Text(cat),
          selected: isSelected,
          onSelected: (_) => toggleCategory(cat),
        );
      }).toList(),
    );
  }
}

References#

The useSetSignal type is referenced and used in the following pages: