solidart_hooks

For a comprehensive and updated documentation go to The Official Documentation


Helper library to make working with solidart in flutter_hooks easier.

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

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

  @override
  Widget build(BuildContext context) {
    final count = useSignal(0);
    final doubleCount = useComputed(() => count.value * 2);
    useSolidartEffect(() {
      debugPrint(
        'Effect count: ${count.value}, doubleCount: ${doubleCount.value}',
      );
    });
    return Scaffold(
      body: Center(
        child: Text('Count: ${count.value}\nDouble: ${doubleCount.value}'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => count.value++,
        child: const Icon(Icons.add),
      ),
    );
  }
}

useSignal

How to create a new signal inside of a hook widget:

class Example extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final count = useSignal(0);
    return Text('Count: ${count.value}');
  }
}

The widget will automatically rebuild when the value changes. The signal will get disposed when the widget gets unmounted.

useComputed

How to create a new computed signal inside of a hook widget:

class Example extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final count = useSignal(0);
    final doubleCount = useComputed(() => count.value * 2);
    return Text('Count: ${count.value}, Double: ${doubleCount.value}');
  }
}

The widget will automatically rebuild when the value changes. The computed will get disposed when the widget gets unmounted.

useSolidartEffect

How to create a new effect inside of a hook widget:

class Example extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final count = useSignal(0);
    useSolidartEffect(() {
        print('count: ${count.value}');
    });
    return Text('Count: ${count.value}');
  }
}

useExistingSignal

How to bind an existing signal inside of a hook widget:

class Example extends HookWidget {
  final Signal<int> count;

  Example(this.count);

  @override
  Widget build(BuildContext context) {
    final counter = useExistingSignal(count);
    return Text('Count: ${counter.value}');
  }
}

The widget will automatically rebuild when the value changes. The signal will NOT get disposed when the widget gets unmounted (unless autoDispose is true).

Libraries

solidart_hooks
A Dart library for Solidart Hooks, providing Flutter Hooks bindings for Solidart.