我们有一个视图,可以使用用户当前位置。
我们正在制作标准'我们可以使用您的位置',当第一次显示视图时(并且用户之前没有说过否)。如果用户说“是”,则会查找当前位置,然后显示此信息。
如果用户拒绝(或者这不是第一次),则视图会保留在屏幕上,可选择以文本方式输入位置或按“使用当前位置”按钮。显然,如果用户之前拒绝了位置,那么如果他们按下“使用当前位置”位置,我们会再次提示同意。
我们目前通过View模型上的'prompt for permission'属性实现了该视图然后订阅的属性。如果用户说'是',我们(视图)在视图模型中执行'userconfirmed'命令,否则我们执行'userdeclined'命令(在视图模型中)。
虽然这有效,但感觉不对。我们已经看到了UserError代码并且可能会使用它,但是使用可能导致错误的机制来提示用户获得权限会感到有点奇怪。显然,这是MVVM实现有许多不同解决方案的场景,但鉴于ReactiveUI的简洁性,我们期望一个微妙的解决方案。
建议任何人?
答案 0 :(得分:1)
UserError框架适用于这种情况,它可能就是我要做的。使用UserError的好处是你可以非常容易地模拟所有场景(即用户拒绝第一个视图,稍后判定是;用户点击是;等等)。
定义UserError的子类(LocationPermissionError或其他),然后在View上注册一个只对LocationPermissionError感兴趣的处理程序。