如何正确处理flutter中的ProviderNotFoundException?

问题描述 投票:0回答:1

我在我的应用程序中使用 MVVM 架构,使用一个简单的(自制)Provider(不是包 Provider,但问题是相同的)和静态

Provider.of<T>(BuildContext context)
方法,其中 T extands
ChangeNotifier
。一切都运转良好。

现在我想通过抛出一个

ProviderNotFoundException
(如果
Provider.of<T>(context)
返回 null,即)来防止 Provider 的错误使用。如果在当前上下文中没有相应的 ViewModel 的情况下调用它。

我发现的不同示例中从未处理过 Provider.of() 抛出异常的情况(在 Medium、Google、Flutter Doc 状态管理示例...)。就我而言,我并不总是希望应用程序崩溃,我想使用

AlertDialog
提醒用户。然后,用户可以停留在主菜单屏幕上并尝试其他页面。

我遇到了一些问题和疑问:

  • 在 View 中使用简单的 try/catch 块并不令人满意:try { } 块必须非常大才能将 ViewModel 传递给所有 Widget。
  • 让 View 负责这个 try/catch 逻辑不是很糟糕吗?
  • AlertDialog 不应出现在有问题的 View 中,而应出现在主菜单中,但主菜单与 Exception 无关;我应该首先在视图中捕获异常,然后重新抛出它,然后在导航器或其他什么地方重新捕获它?

如何正确处理?

flutter exception mvvm
1个回答
0
投票

很可能您缺少在 MultiProvider 中添加您的 Provider !

© www.soinside.com 2019 - 2024. All rights reserved.