Попытался позвонить провайдеру.из. Скорее всего, это ошибка, и поэтому она не поддерживается

# #firebase #flutter #flutter-provider

Вопрос:

Пытаюсь получить и ввести uid текущего пользователя, но сталкиваюсь с ошибкой в реализации поставщика.

Пытался дозвониться до провайдера.оф. Скорее всего, это ошибка, и поэтому она не поддерживается. Если вы хотите предоставить доступ к переменной, которая может быть чем угодно, подумайте dynamic о том, чтобы Object вместо этого перейти на. ‘пакет:поставщик/src/поставщик.dart’: Неудачное утверждение: строка 307 pos 7: «T != динамический»

Вот код, в котором используется поставщик

  return SingleChildScrollView(
      child: Column(
        children: [
          FutureBuilder(
              future: Provider.of(context, listen: false).auth.getCurrentUid(),
              builder: (context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  return Text("${snapshot.data}");
                } else {
                  return CircularProgressIndicator();
                }
              })
        ],
      ),
    );
 

функция для получения текущего uid

 //GET UID
  Future<String> getCurrentUid() async {
    return _auth.currentUser.uid;
  }
 

Как я могу это исправить?
Действительно ценю любую помощь!
Заранее спасибо.

Ответ №1:

Просто замените

 future: Provider.of(context, listen: false).auth.getCurrentUid(),
 

с

 future: Provider.of<YOUR_PROVIDER_CLASSNAME>(context, listen: false).auth.getCurrentUid(),
 

и с тобой все должно быть в порядке.

Единственный момент, который вы можете использовать Provider.of без указания класса, который должен быть предоставлен, — это когда вы инициализируете переменную вашего провайдера.

 MyProvider _myProvider = Provider.of(context, listen: false);
 

Ответ №2:

Просто скажите поставщику, какой это тип класса «Поставщик».

 future: Provider.of<CLASSNAME>(context, listen: false).auth.getCurrentUid(),