Guidance for using the Oref Flutter signals/state management library and its DevTools/analyzer tooling. Use when answering questions about installing Oref, creating signals/computed/effects, async data, reactive collections, SignalBuilder usage, analyzer lints, DevTools extension setup/usage, or troubleshooting Oref behavior.
Based on the Oref docs and repository examples. Use BuildContext-bound APIs inside widget builds when possible.
signal(context, ...)/computed(context, ...)/effect(context, ...) inside build.null context only outside widgets, and keep the dispose handle.SignalBuilder to scope rebuilds to small subtrees.batch() for multi-step updates or collection mutations.computed getters.| Topic | Description | Reference |
| ----------------- | --------------------------------------------------------------------------- | ------------------------------------------------ |
| Quick Start | Install + minimal signal/computed/effect usage | quick-start |
| Reactivity Core | Signals, computed, writableComputed, effects, batch, untrack, SignalBuilder | core-api |
| Hooks & Lifecycle | Hook ordering rules, onMounted/onUnmounted, cleanup | hooks-lifecycle |
| Async Data | useAsyncData lifecycle and rendering | async-data |
| Collections | ReactiveList/Map/Set patterns | collections |
| Topic | Description | Reference | | --------------- | ------------------------------- | ------------------------------------------------ | | Analyzer Lints | Plugin setup + lint catalog | analyzer-lints | | DevTools | Extension setup + runtime notes | devtools | | Troubleshooting | Common pitfalls and fixes | troubleshooting |
import 'package:flutter/material.dart';
import 'package:oref/oref.dart';
class Counter extends StatelessWidget {
const Counter({super.key});
@override
Widget build(BuildContext context) {
final count = signal(context, 0);
final doubled = computed(context, (_) => count() * 2);
return Column(
children: [
Text('Count: ${count()} / ${doubled()}'),
TextButton(onPressed: () => count.set(count() + 1), child: const Text('Add')),
],
);
}
}
import 'package:oref/oref.dart';
pubspec.yaml or ask them to confirm.Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer