Flutter中ValueNotifier包装的变量无法更新问题求助
问题根源
你每次调用CurrentLanguages()都会生成一个全新的类实例,这是核心错误:
- 在
_sendBackLanguage方法里,你修改的是某一个CurrentLanguages实例的sourceLang/outputLang值; - 但打印时又新建了
CurrentLanguages()实例,这个新实例的状态完全是初始值,和之前修改的实例毫无关联,所以永远打印初始的English、French。
修复方案
要保证整个流程中操作的是同一个CurrentLanguages实例,常见实现方式:
- 用
ChangeNotifierProvider把CurrentLanguages实例注入到应用的Widget树中,在需要调用方法或获取状态的地方,通过Provider.of<CurrentLanguages>(context)获取同一个实例; - 或者把
CurrentLanguages设计成单例模式,确保全局仅存在一个实例。 - 打印时必须使用你之前修改过状态的那个实例,而不是新建实例。
内容的提问来源于stack exchange,提问作者user14080007
相关产品推荐
相关产品推荐

