如何将appState(提供者)传递到initState的屏幕中?

时间:2020-03-02 12:53:13

标签: flutter dart

你好,我有这个问题

在_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();
  }
}

应如何实施?

1 个答案:

答案 0 :(得分:2)

您不能在listen: true内使用initState。请改用listen: false

@override
void initState() {
  super.initState();
  Provider.of<Whatever>(context, listen: false);
}