【发布时间】:2021-11-13 03:43:51
【问题描述】:
我的 Flutter Android 应用有一个主页,该主页由一个以 PageView 作为主体的 Scaffold 组成。 PageView 有两页:第一页是新闻源,第二页是日历。每个页面都有自己的自定义 FloatingActionButton。 ChangeNotifierProvider 处理页面更改,以便 FAB 在页面索引更改时更改。仅当应用程序的用户具有管理员权限时,才会显示第二页上的 FAB,该权限存储在第二个 ChangeNotifierProvider 中。在伪代码中,FAB 处理程序如下所示:
if (pageIndex == 0) {
return NewsFeedFAB;
}
if (pageIndex == 1) {
if (context.watch<UserDataModel>().currentUser.customClaims.admin) { // important line
return CalendarFAB;
} else {
return null;
}
}
现在是我的问题。打开应用程序时,我可以毫无问题地滑动页面。一切都按预期工作。但是,当我在新闻源页面上打开键盘(这是可能的,因为用户可以在帖子上写 cmets)然后尝试滑动到第二页时,我收到错误:The getter 'admin' was called on null.(参见代码中的“重要行” )。我应该注意,当索引更改以关闭键盘时,pageIndexChangeHandler 会使焦点节点失焦。我认为这可能与问题有关,但如果我让键盘出现然后手动将其关闭然后滑动,则会发生同样的错误。
似乎激活键盘会以某种方式弄乱 ChangeNotifierProdiver UserDataModel。这似乎是一个非常小众的错误,所以任何帮助将不胜感激!
【问题讨论】:
标签: flutter keyboard flutter-provider flutter-pageview