在同一类中获得更改的值?
Posted
技术标签:
【中文标题】在同一类中获得更改的值?【英文标题】:Getting a changed value within the same class? 【发布时间】:2021-08-16 22:58:53 【问题描述】:我正在尝试访问在类之外设置的布尔值。当我检查 getter 中的值时,它是正确的。但是,当我尝试从同一个类中的不同方法访问该值时,我得到的是未更改的旧值。
有没有办法解决这个问题,或者我需要两个单独的类来做到这一点?这是一段小sn-p代码。
class RoutineProvider with ChangeNotifier
bool _isNight = false;
set isNight(bool newValue)
print(newValue); // returns true
_isNight = newValue;
print(_isNight); // returns true
notifyListeners();
bool get isNight => _isNight;
Future<Routine> basicRoutine()
print(RoutineProvider().isNight); // returns false
if (RoutineProvider().isNight)
return firestore
.collection('routines')
.doc('basic_routine_night')
.get()
.then((snap) => Routine.fromDocSnap(snap));
return firestore
.collection('routines')
.doc('basic_routine')
.get()
.then((snap) => Routine.fromDocSnap(snap));
【问题讨论】:
好吧,每当您调用 RoutineProvider().isNight 时,它都会创建 RoutineProvider 类的新实例,默认情况下 _isNight 为 false。这就是为什么它总是错误的。 【参考方案1】:调用 RoutineProvider() 似乎每次都会实例化一个新的 RoutineProvider 对象。您可以尝试将bool _isNight = false
更改为static bool _isNight = false
【讨论】:
以上是关于在同一类中获得更改的值?的主要内容,如果未能解决你的问题,请参考以下文章
当 UITextField 获得焦点时,从 UITableViewCell 继承类中更改 UITableViewCell 的高度
Angular Frontend - 如何更改从前端获得的值