我正在使用Provider
作为状态管理员。我有几个收集数据的小部件。我的小部件之一是应该完成所有数据保存的按钮。它具有onPressed () { ... }
事件。我想在保存之前对数据进行一些计算。
我想在单独的课上做
class ResultProcessing
{
// here I need access to data from provider
}
按钮:
Flexible(
child: Container(
child: RaisedButton(
child: Text("Save"),
onPressed: () {
// I need to pass data to ResultProcessing
},
)),
),
但是我无法访问Provider
中的数据的问题,因为ResultProcessing
类不是小部件,并且没有context
。
我需要从处理类中获取的类名称数据为Provider.of<AppState>(context).customer;
我应该在什么时候创建ResultProcessing
的实例?在onPressed
事件中?
答案 0 :(得分:1)
你没有,那是反模式。 您的对象有目的地在小部件树之外无法访问。
您应该更改方法。而是使用小部件充当模型和提供者之间的桥梁。
一个典型的例子是ProxyProvider
和类似的变体
答案 1 :(得分:1)
您可以执行以下操作。
Flexible(
child: Container(
child: RaisedButton(
child: Text("Save"),
onPressed: () {
DataClass data = Provider.of<DataClass>(context);
// Pass data to ResultProcessing
ResultProcessing.handle(data);
},
),
),
),