Flutter通知管理插件muteable_notifiers的使用

Flutter通知管理插件mutable_notifiers的使用

mutable_notifier

mutable_notifier 扩展了 ChangeNotifierValueNotifier,允许暂时禁用通知器。

  • <code>MuteableChangeNotifier/MuteableValueNotifier.muteNext()</code> 只会禁用下一次调用 notifyListeners 的通知,并恢复到之前的状态。
  • <code>MuteableChangeNotifier/MuteableValueNotifier.mute() 和 .unmute()</code> 切换通知器的静默状态。
  • <code>MuteableChangeNotifier/MuteableValueNotifier.doMuted(Function fn)</code> 禁用通知器,执行函数,然后恢复到之前的静默状态。

入门指南

首先创建一个继承自 MuteableChangeNotifierMuteableValueNotifier 的子类。

class MyChangeNotifier extends MuteableChangeNotifier {
  String _field;
  String get field => _field;

  // 构造函数初始化字段
  MyChangeNotifier(String initialValue) : _field = initialValue;

  // 设置新值并触发监听器
  void setField(String newValue) {
    if (newValue == _field) {
      return;
    }
    _field = newValue;
    notifyListeners();
  }

  ...
}

class MyStringValueNotifier extends MuteableValueNotifier<String> {
  MyStringValueNotifier(String value) : super(value);
}

接下来,可以使用各种静默功能来“关闭”对 notifyListeners 的调用。

void main() {
  var muteableChangeNotifier = MyChangeNotifier(initialValue: "初始字段值");
  muteableChangeNotifier.addListener((_) {
    print("监听器被调用");
  });

  // 监听器被调用
  muteableChangeNotifier.setField("第二个值");

  // 下一次调用 notifyListeners 被禁用
  muteableChangeNotifier.muteNext();
  muteableChangeNotifier.setField("第三个值");

  // 监听器被调用,因为只有上一次调用被禁用
  muteableChangeNotifier.setField("第四个值");

  // 禁用所有后续的 notifyListeners 调用
  muteableChangeNotifier.mute();

  // 监听器不会被调用
  muteableChangeNotifier.setField("第五个值");
  muteableChangeNotifier.setField("第六个值");
  muteableChangeNotifier.setField("第七个值");

  // 恢复监听器调用
  muteableChangeNotifier.unmute();
  muteableChangeNotifier.setField("最终值");
}

更多关于Flutter通知管理插件muteable_notifiers的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


mutable_notifiers 是 Flutter 中的一个状态管理插件,它允许你创建可变的 ValueNotifier 对象,并且可以方便地监听和更新这些对象的状态。mutable_notifiers 提供了一种简单的方式来管理应用程序的状态,特别是在需要频繁更新状态的情况下。

安装

首先,你需要在 pubspec.yaml 文件中添加 mutable_notifiers 依赖:

dependencies:
  flutter:
    sdk: flutter
  mutable_notifiers: ^1.0.0

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

基本用法

mutable_notifiers 的核心是 MutableValueNotifier,它是一个可变的 ValueNotifier。你可以使用它来存储和更新状态,并且可以监听状态的变化。

1. 创建 MutableValueNotifier

import 'package:mutable_notifiers/mutable_notifiers.dart';

final counter = MutableValueNotifier<int>(0);

这里我们创建了一个 MutableValueNotifier,初始值为 0

2. 监听状态变化

你可以使用 addListener 方法来监听 MutableValueNotifier 的变化:

counter.addListener(() {
  print('Counter value changed to: ${counter.value}');
});

每当 counter 的值发生变化时,监听器都会被调用。

3. 更新状态

你可以通过直接修改 value 属性来更新状态:

counter.value = 1;

这会将 counter 的值更新为 1,并且会触发之前添加的监听器。

4. 在 Widget 中使用

你可以在 Flutter Widget 中使用 MutableValueNotifier 来管理状态。例如,你可以使用 ValueListenableBuilder 来构建一个响应状态变化的 UI:

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

class CounterApp extends StatelessWidget {
  final counter = MutableValueNotifier<int>(0);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Mutable Notifiers Example')),
        body: Center(
          child: ValueListenableBuilder<int>(
            valueListenable: counter,
            builder: (context, value, child) {
              return Text('Counter: $value');
            },
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            counter.value++;
          },
          child: Icon(Icons.add),
        ),
      ),
    );
  }
}

void main() {
  runApp(CounterApp());
}
回到顶部