Flutter快速状态管理插件quick_state的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter快速状态管理插件quick_state的使用

简介

Quick 是一个基于单例模式的状态管理工具,允许您以全局方式管理变量,并且与 flutter_secure_storage 集成良好。这使得在您的应用程序中持久化数据(如缓存、令牌等)变得非常容易。学习曲线短,实现简单,但仍然可以进行更复杂的实现以获得更高的控制力和性能。

特性

以下是 Quick 的主要功能:

  • notify(dynamic dependency):通知特定监听器更新其状态。
  • notifyAll():通知所有监听器更新它们的状态。
  • statusOf(String key):返回某个工作器的状态。
  • setStatus(String key, dynamic status):设置某个工作器的状态。
  • set(String key, dynamic value):为指定的键设置值并返回对该键的引用。
  • make(String key, Function(dynamic) maker):使用函数生成器创建值并返回对该键的引用。
  • get(String key):获取指定键的值。
  • store(String key, dynamic value):将值存储到设备中(使用 flutter_secure_storage)。
  • free(String key):移除指定键及其对应的值。
  • ref(String key):返回指定键的引用。
  • clear():清除所有值。
  • lock(String key):锁定特定键以防止更改。
  • unlock(String key):解锁之前锁定的键。
  • on(String key, Function(dynamic params, Function(dynamic) setStatus) work):为指定键定义一个任务。
  • off(String key):移除与指定键关联的任务。
  • call(String key, {dynamic params}):执行与指定键关联的任务并更新状态。
  • caller(String key, {dynamic params}):返回一个可以用于执行与指定键关联任务的函数。
  • bind(dynamic obj):返回对象的单例实例。
  • dispose(dynamic obj):移除对象的单例实例。
  • watcher(Widget Function() build, {List ...}):动态监听状态变化并重新构建 UI。
  • builder({Widget Function(BuildContext context) builder, List ...}):构建带有上下文的 widget。
  • switcher({dynamic status, Map<dynamic, Widget> cases, List ...}):根据状态切换不同的 widget。

快速开始

使用 Quick 无需额外配置,只需在需要的地方直接使用即可!

使用示例

以下是一个完整的示例,展示如何使用 Quick 进行状态管理:

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

void main() {
  // 初始化时设置初始值
  Quick.set('contador', 3);
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 在构建过程中设置新值
    Quick.set('contador', 57);
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyWidget(),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Contador Flutter'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Contagem:',
              style: TextStyle(fontSize: 20),
            ),
            // 动态监听状态并显示计数器值
            Quick.watcher(
              () => Text(
                "Meu contador vale ${Quick.get('contador')}!",
                style: const TextStyle(fontSize: 36, fontWeight: FontWeight.bold),
              ),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => Quick.make('contador', (c) => c + 1),
        tooltip: 'Incrementar',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter快速状态管理插件quick_state的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter快速状态管理插件quick_state的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


quick_state 是一个轻量级且易于使用的 Flutter 状态管理插件,旨在简化状态管理的过程。它通过提供一种简单的方式来管理和共享状态,使得开发者可以更专注于业务逻辑,而不是复杂的状态管理代码。

以下是如何使用 quick_state 的快速指南:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 quick_state 依赖:

dependencies:
  flutter:
    sdk: flutter
  quick_state: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 创建状态类

创建一个状态类,它将包含你希望管理的状态。你可以使用 QuickState 类来轻松管理状态。

import 'package:quick_state/quick_state.dart';

class CounterState extends QuickState {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();  // 通知监听者状态已更新
  }

  void decrement() {
    _count--;
    notifyListeners();  // 通知监听者状态已更新
  }
}

3. 在应用中使用状态

在你的 Flutter 应用中,使用 QuickStateProvider 来提供状态,并在需要的地方访问它。

import 'package:flutter/material.dart';
import 'package:quick_state/quick_state.dart';
import 'counter_state.dart';  // 导入刚才创建的状态类

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return QuickStateProvider(
      states: {
        CounterState: CounterState(),  // 提供状态实例
      },
      child: MaterialApp(
        title: 'QuickState Example',
        home: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final counterState = QuickState.of<CounterState>(context);  // 获取状态实例

    return Scaffold(
      appBar: AppBar(
        title: Text('QuickState Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Count:',
            ),
            Text(
              '${counterState.count}',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          counterState.increment();  // 调用状态方法
        },
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

4. 更新 UI

当状态发生变化时,notifyListeners() 会通知所有监听者,并自动更新 UI。

5. 使用多个状态

如果你有多个状态类,可以在 QuickStateProvider 中提供多个状态实例:

QuickStateProvider(
  states: {
    CounterState: CounterState(),
    AnotherState: AnotherState(),
  },
  child: MaterialApp(
    title: 'QuickState Example',
    home: MyHomePage(),
  ),
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!