Riverpod状态更新后UI没刷新,是不是监听方式有问题?
我在用Riverpod做Flutter开发,修改了Provider里的数据,但界面上的Text没变化。明明调用了ref.read(myProvider.notifier).update(),也确认数据确实变了,可就是不重建Widget,这到底是哪出问题了?
之前在Vue里类似逻辑是这样写的:
<template>
<div>{{ count }}</div>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
setTimeout(() => count.value = 5, 1000)
</script>
Riverpod和Vue的响应式机制不一样。Vue的ref是响应式的,但你用ref.read去拿Provider的值,它只读一次,不会建立监听关系,状态变了UI自然不会更新。
改一下:
另一个可能:如果你用的是StateNotifier,确保更新状态是通过state属性:
你检查一下是不是build方法里用了read?