我是flutter的新手,在使用bloc进行数据管理时遇到了一些问题。我正在构建一个应用程序,该应用程序使用block发出请求(get_things(,并接收对象列表作为响应(例如:{quot;things":[{quot;id"1,"color":"green"},{quotquot;id>:2,"colors":"blue"},…](。
有了这个响应,我构建了一个小部件;事物;使用blocState。然后我制作另一个页面,调用相同的区块来创建类似的小部件,但在这个页面中,我们可以创建、修改或删除";事物;并请求在数据库中更改它们(modify_things(。
问题是,我希望两个页面在更改后都能更新列表,而不需要向后端请求用修改后的列表重建列表。
作为一个解决方案,我想把初始请求的blocState数据保存在某个地方,然后在本地使用它来更改小部件(列表(。我的意思是,我删除一个";事物;并发送修改数据库的请求,同时我在本地修改保存的blocState列表以反映此更改。这样,我只需要使用get_things一次,只需要在更改列表时使用modify_things。
这是一个好主意吗?这个方法看起来很麻烦,但由于我是个新手,所以我想不出其他方法了。
至于我需要减少请求并在本地进行管理,这是因为我被告知在未来这些";事物;可能会变得非常大,每次我需要查看小部件时发出请求最终可能会成为性能问题。
如果我理解正确,您将[{"id": 1, "color" : "green"},{"id":2 , "color":"blue"},...]
发送到页面A,然后您希望在页面B上使用相同的数据。
我想,干净的方法是在页面A上添加一个带有myBloc.add([{"id": 1, "color" : "green"},{"id":2 , "color":"blue"},...] )
的事件,这也会触发页面B加载。然后myBloc生成一个包含该数据和可能更多数据的状态,显示页面B.
当然,您也可以在myBloc中声明一个PageADisplayState storedState;
,然后在生成状态之前通过storedState = things; yield PageADisplayState(things);
存储它