在内部调用context.read()是不安全的。因此,它会引发一个错误,但是允许Provider.of(context,listen = false)进行向后兼容,但仍然不安全。如何获得内部版本的context.read()功能。
我找到了一个解决方案:
在模型中添加两个值,一个会更改,另一个不会:
ax1.plot_surface(xx.T, yy.T, 0.0001+test8x8, alpha=0.5, rstride=1, cstride=1, \
linewidth=0.5, antialiased=True, zorder = 10)
在窗口小部件调用class MyModel extends ChangeNotifier {
double value = 45;
double thisValueWillNeverChange = 45;
}
中,该值需要更改并且应导致窗口小部件重新生成,但是在您只想读取初始值而又不想更新窗口小部件的地方使用value
。
您可以使用context.select()或context.watch()访问这两个值。
如您所见,appBar中的标题将带有thisValueWillNeverChange
,因此它保持静态,但是文本和滑块将改变并且将使用thisValueWillNeverChange
。
在开始时,应用程序将以初始值为45.0的所有内容开始