Flutter rxflare 响应式编程:.obs + Rx 组件极简实战

17 阅读2分钟

前言

在 Flutter 轻量化响应式开发中,rxflare 是一款超轻量、零侵入的状态管理库,核心 API 只有 .obsRx 组件,上手成本极低,性能优秀。

今天用一段最精简的代码,带你快速掌握 rxflare 的核心用法:一行代码把变量变成响应式,自动刷新 UI

一、核心亮点

  • 无需 setState
  • 无需 StatefulWidget
  • 无需任何复杂模板
  • .obs + Rx 两个核心 API
  • 超轻量、无侵入、编译快

二、依赖安装

pubspec.yaml 添加:

yaml

dependencies:
  flutter:
    sdk: flutter
  rxflare: ^1.5.1 # 请使用最新版

执行:

plaintext

flutter pub get

三、完整可运行代码

dart

import 'package:flutter/material.dart';
import 'package:rxflare/rxflare.dart';

class RxFlareDemo extends StatelessWidget {
  const RxFlareDemo({super.key});

  // 1. 定义响应式变量:.obs 一键响应式
  final count = 0.obs;
  final name = "张三".obs;
  final isActive = true.obs;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("rxflare 响应式实战"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 2. Rx 组件:自动监听变量变化并刷新
            Rx(
              () => Column(
                children: [
                  Text('姓名:${name.value}', style: const TextStyle(fontSize: 28)),
                  Text('计数:${count.value}', style: const TextStyle(fontSize: 42, color: Colors.deepPurple)),
                  Text(
                    '状态:${isActive.value ? "🟢 激活" : "🔴 关闭"}',
                    style: const TextStyle(fontSize: 24),
                  ),
                ],
              ),
            ),
            const SizedBox(height: 60),
            // 3. 操作按钮:修改 .value 即可触发 UI 刷新
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                FloatingActionButton(
                  onPressed: () => count.value++,
                  child: const Icon(Icons.add),
                ),
                const SizedBox(width: 20),
                FloatingActionButton(
                  onPressed: () => name.value = name.value == "张三" ? "李四" : "张三",
                  child: const Icon(Icons.person),
                ),
                const SizedBox(width: 20),
                FloatingActionButton(
                  onPressed: () => isActive.value = !isActive.value,
                  child: const Icon(Icons.power_settings_new),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(const MaterialApp(
    home: RxFlareDemo(),
  ));
}

四、代码核心解析

1. 响应式变量

dart

final count = 0.obs;
final name = "张三".obs;
final isActive = true.obs;
  • 任何基础类型(int / String /bool)加 .obs → 立即变成响应式变量
  • 取值:变量.value
  • 赋值:变量.value = 新值

2. Rx 响应式组件

dart

Rx(() => 你的UI组件)
  • Rx 会自动监听内部使用的所有 .obs 变量
  • 变量变化 → 自动重建 UI
  • 无需任何状态类、无需 setState

3. 修改变量自动刷新

dart

count.value++;
name.value = "李四";
isActive.value = !isActive.value;
  • 只需要修改 .value,UI 就会自动刷新
  • 极简、直观、高性能

五、运行效果

  • 点击 ➕ 按钮:计数自动增加
  • 点击 👤 按钮:姓名在 张三 ↔ 李四 切换
  • 点击 ⚡ 按钮:状态在 激活 ↔ 关闭 切换
  • 全程无状态类、无 setState

六、rxflare 适合谁?

  • 喜欢极简代码的开发者
  • 不想学习复杂状态管理(Provider、Bloc、GetX)的新手
  • 需要轻量、快速实现响应式的项目
  • 追求无侵入、无模板的团队

七、总结

rxflare 真正做到了:

  • 一行 .obs 开启响应式
  • 一个 Rx 组件自动刷新
  • 全程无状态、无模板、无侵入

如果你追求极简、高效、轻量的 Flutter 状态管理,rxflare 绝对是首选。