我有这个例子ChangeNotifier:

class ExmapleNotifier extends ChangeNotifier {
  bool isDark = false;

  toggleTheme() {
    isDark = !isDark;
    notifyListeners();
  }
}

当我试图将它与ValueListenableBuilder一起使用时,它会抛出一个错误,它不是ValueListenable,有什么方法可以将它们结合起来吗?

推荐答案

为此,我可能会 Select ChangeNotifierProvider.您也可以使用AnimatedBuilder微件.


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

  @override
  Widget build(BuildContext context) {
    final exampleNotifier = ExmapleNotifier();
    return AnimatedBuilder(
      animation: exampleNotifier,
      builder: (context, child) => Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text("is Dark ${exampleNotifier.isDark}"),
          ElevatedButton(
            onPressed: exampleNotifier.toggleTheme,
            child: Text("toggle"),
          ),
        ],
      ),
    );
  }
}

Flutter相关问答推荐

关闭视频通话,相机仍在运行!(Flutter WebRTC)

Flutter 蜂窝单元测试

确保通过在CheckIfFavoriteMovieEvent((event,emit){...})上注册处理程序误差

在背景图像上排列定位徽标

Flutter 构建 Web 分段故障 - 无法启动事件处理程序线程

如何在 Flutter 中以背景 colored颜色 制作圆圈的一部分

如何在Flutter 中使用选定的键和值从 map 列表创建 map

Flutter:我的应用程序是否需要包含退款购买?

找不到任何与 com.google.firebase:firebase-sessions:[15.0.0, 16.0.0) 匹配的版本

Flutter蓝牙 - 如何通过蓝牙从设备中获取文件?

Flutter: pie_chart 插件动画滚动问题

Dart 撕掉 const 构造函数

无状态小部件被奇怪地重建

Android 模拟器在 Apple M2 芯片 EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 上随机崩溃

我在手机上找不到我的 Flutter 应用缓存数据

如何使用 Rrect 或类似工具在 flutter 中绘制梯形线?

既然我们已经有了 Flutter 的内置 setState,为什么还要在 Flutter 中使用 BloC 或 Provider?

Flutter Bloc Todo 示例 - 收听存储库中的单个 todo

参数类型MaterialPageRoute不能分配给参数类型String

Flutter .replaceFirst(或全部)不起作用