在有状态小部件中使用提供程序

时间:2020-10-05 21:24:25

标签: flutter google-cloud-firestore

我对Flutter / Firebase还是很陌生,对于一个非常简单的CRUD联系人应用程序,提供商实现存在问题。我不确定如何解决此问题。

[VERBOSE-2:ui_dart_state.cc(166)]未处理的异常:'package:provider / src / provider.dart':失败的断言:第284行pos 7:'T!= dynamic':试图调用提供者。的。这可能是一个错误,因此 不支持。 如果要公开可以是任何变量的变量,请考虑更改 从dynamicObject

这是保存页面的代码。

actions: [
        IconButton(
            icon: Icon(
              Icons.done,
              color: Colors.white,
            ),
            onPressed: () async {
              //save data to firebase
              final uid = await Provider.of<dynamic>(context, listen: false)
                  .auth
                  .getCurrentUID();

              await db
                  .collection("userData")
                  .doc(uid)
                  .collection('contacts')
                  .add(
                {
                  'Name': widget.contact.name,
                  'PhoneNumber': widget.contact.phoneNumber,
                  'Location': widget.contact.location,
                  'Notes': widget.contact.notes
                },
              );

谢谢

1 个答案:

答案 0 :(得分:1)

错误消息很不言自明。

您需要在Provider.of语句中使用正确的类型(或Object),而不要使用动态类型。

await Provider.of<CorrectType>(context, listen: false)
  .auth
  .getCurrentUID();