在自定义类中使用提供程序

时间:2020-04-19 22:51:16

标签: flutter dart

我正在创建一个程序,该程序需要使用Provider来获取值。我在有状态的小部件中按如下所示致电我的提供商

final user = Provider.of<Users>(context);

现在,我想在自定义类中使用提供程序

class UserInformation {
    final user = Provider.of<Users>(context):
}

这将不起作用,因为未定义上下文。请在不使用BuildContext的情况下为我提供帮助。

这是我的班级用户,我在单独的dart文件中拥有这些用户,并用作我的数据流的模型。

class Users {
  final String uid;
  final String name;
  final String department;
  final String position;

  Users({ this.uid, this.department, this.name, this.position });
}

这是我用来从Firestore中提取数据的查询

Stream<List<FormQuestions>> get userData{
  return userCollection.where('name', isEqualTo: 'First Name').where('department', isEqualTo: 'department').snapshots()
  .map(_userDataFromSnapshot);
}

我希望名称是从模型类的用户名(user.name)中获取的变量。和部门一样。

谢谢。

1 个答案:

答案 0 :(得分:4)

您只能访问在提供的=(ROWS(A1:A9)-COUNTBLANK(A1:A9))/SUMPRODUCT(1/COUNTIF(OFFSET(A1,,,COUNTA(A1:A9));OFFSET(A1,,,COUNTA(A1:A9)))) 下的树的后代小部件中的ChangeNotifiers类,因为ChangeNotifier在幕后使用Provider(在{ {1}})为您提供您在树中放置的InheritedWidget

因此,在您的情况下,无法从context访问ChangeNotifier,因此您必须更改代码以解决此问题

编辑::这是实现所需的建议。如果您在小部件中使用以下代码:

Users