你好,我有这个问题
在_NavigationBarState.initState()完成之前,调用dependOnInheritedWidgetOfExactType <_DefaultInheritedProviderScope>()或dependOnInheritedElement()。
我试图将AppState
的值传递到屏幕,而两者都在initState
中。
initState
:
@override
void initState() {
final appState = Provider.of<AppState>(context, listen: true);
screens = [
Home(),
Search(),
AddPost(),
Notifications(),
Profile(appState.currentUser),
];
super.initState();
}
还有我的AppState
:
class AppState extends ChangeNotifier {
AppState() {
_fetchAll();
}
// User
var currentUser = CurrentUser();
var lastUser = LastUser();
Future<void> _fetchCurrentUser() async {
currentUser.fetchUser('0');
}
Future<void> _fetchAll() async {
print('fetching');
_fetchCurrentUser();
notifyListeners();
}
}
应如何实施?
答案 0 :(得分:2)
您不能在listen: true
内使用initState
。请改用listen: false
:
@override
void initState() {
super.initState();
Provider.of<Whatever>(context, listen: false);
}