Skip to content

Dart/Flutter 低入侵性的响应式系统。

在许多框架中类似的响应性基础类型被称之为 "信号",从根本上来讲,Oref 是与信号概念一样拥有相同的响应性基础类型。 它是一个在访问时跟踪依赖、在变更时触发副作用的值容器。

什么是响应性?

本质上响应性是一种可以使我们声明式地处理变化的编程范式。有太多的前端框架都在讲述它的重要性:

安装

你可以直接将 Oref 通过这个命令添加到任何 Dart 项目中:

bash
dart pub add oref

或者修改你的 pubspec.yaml 文件:

yaml
dependencies:
  oref: latest

基本用法

dart
import 'package:oref/oref.dart';

void main() {
  final count = ref(0);
  final double = derived(() => count.value * 2);
  final runner = effect(() {
    print('count: ${count.value}, double: ${double.value}');
  }, onStop: () {
    print('effect stopped');
  });

  count.value = 10; // 打印 'count: 10, double: 20'

  // 停止 effect
  runner.effect.stop(); // 打印 'effect stopped'

  count.value = 20; // 无效

  // 如果 effect 被停止,我们可以手动运行一次。
  runner(); // 打印 'count: 20, double: 40'

  count.value = 30; // 无效
}