Я пытаюсь реализовать Provider, и кажется, что он работает нормально, но я получаю следующее сообщение:
Этот виджет _DefaultInheritedProviderScope нельзя пометить как требующий сборки, поскольку структура уже находится в процессе создания виджетов. Виджет может быть помечен как требующий создания на этапе сборки, только если один из его предков в настоящее время строит. Это исключение разрешено, потому что фреймворк строит родительские виджеты раньше дочерних, что означает, что всегда будет строиться грязный потомок. В противном случае платформа может не посещать этот виджет на этапе сборки. Виджет, для которого был вызван setState () или markNeedsBuild (): значение _DefaultInheritedProviderScope: экземпляр 'UserProfile', прослушивающий значение Виджет, который в настоящее время создавался, когда был сделан оскорбительный вызов, был: FutureBuilder грязное состояние: _FutureBuilderState # bf6ec Когда было сгенерировано исключение, это был стек:
0 Element.markNeedsBuild. (пакет: flutter / src / widgets / framework.dart: 3896: 11)
1 Element.markNeedsBuild (пакет: flutter / src / widgets / framework.dart: 3911: 6)
2 _InheritedProviderScopeMixin.markNeedsNotifyDependents (пакет: provider / src / inherited_provider.dart: 268: 5)
3 ChangeNotifier.notifyListeners (пакет: flutter / src / foundation / change_notifier.dart: 206: 21)
4 UserProfile.user = (package: mdd / core / services / user_info.dart: 13: 5) ... Профиль пользователя
отправка уведомления была: Экземпляр UserProfile
Мой код следующий:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final authService = Provider.of<AuthService>(context);
final userProfile = Provider.of<UserProfile>(context);
return StatefulWrapper(
onInit: () {
FirebaseNotifications().setUpFirebase();
},
child: FutureBuilder<User>(
future: authService.getUser(),
builder: (context, AsyncSnapshot<User> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.error != null) {
return Text(snapshot.error.toString());
}
userProfile.user = snapshot.data;
// FirebaseUser user = snapshot.data;
return snapshot.hasData ? ListScreen() : LoginScreen();
} else {
return Scaffold(
appBar: AppBar(),
body: Container(),
);
}
},
)
);
}
}
А это класс UserProfile:
class UserProfile with ChangeNotifier {
User _user = User();
get user {
return _user;
}
set user(User user) {
this._user = user;
notifyListeners();
}
}
и часть AuthService, используемая для получения профиля:
Future<User> getUser() async {
print('GETTING THE USER');
final fbaseUser = await _auth.currentUser();
final snapshot = await _db.collection('users')
.document(fbaseUser.uid)
.get();
if (snapshot.data != null) {
Map<dynamic, dynamic> jsres = snapshot.data;
_user = User.fromJson(jsres);
return _user;
}
}
Почему я получаю эту ошибку? Что я делаю неправильно? Кто-нибудь может мне помочь с этим, пожалуйста?