设置内容列表布局的时候,要把当前选择的内容列表布局存储在本地设备上。这里我们可以添加一个这样的反应。
在 post_index_store 里面先定义一个添加反应用的方法,名字是 storeLayoutWhenLayoutChanged ,这个方法 return 的东西,可以用一下 reaction 这个函数添加一个反应,要关注的 Observable 是 layout ,再设置一下要做的事情,接收一个 data 参数,用一下 AppStorage.setString,在本地设备上存储一个数据,名字叫 postListLayout,数据的值可以用一下 data.toString() 。
在 InitReactions 里面,用一下 reactionDisposers.add ,把执行 storeLayoutWhenLayoutChanged 返回的结果交给这个方法。
然后在构造方法里,执行一下这个 initReactions 。再找到 storeLayout,现在我们就可以把这个方法删除掉了。
然后打开 app_page_headers_actions_more ,这里之前用了一下 postIndexStore 里的 storeLayout,现在可以换成 setLayout 这个动作,这个动作会修改 layout 的值,它的值有变化,我们配置好的反应就会把当前选择的布局存储在本地设备上。
打开调试,重新启动一下。
然后打开弹出菜单,选择一下内容列表的布局, 再重新启动一下,你会发现内容列表仍然会保持之前选择的布局。说明我们在 PostIndexStore 里配置的反应生效了。