# #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(),