现在我们要用 postShowStore 替换 postShowModel,所以在这个 post_provider 这里,可以把这个postShowProvider 删除掉,这样上面导入这个 post_show_model 用的代码就不需要了,也把它删除掉。
再把它从 postProviders 里面的这个 postShowProvider 也删除掉。
post_list_item.dart
再去修改几个地方,打开 post_list_item,在 build 方法里,声明一个 postShowStore,用 context.read,类型是 PostShowStore。
然后在这个 postListItemMediaMask 这里,点按回调里面,可以执行 postShowStore 里的 setPost,把 item 交给这个方法。
再把上面导入 post_show_model 用的这行代码删除掉。
app_router_delegate.dart
再打开 app_router_delegate,在 build 方法里,声明一个 postShowStore,用 context.read,类型是 PostShowStore。找到这个 PostShow ,给它提供的 post 参数的值,这里可以设置成 postShowStore 里的 post。然后把上面导入 post_show_model 用的代码删除掉。
post_show.dart
然后打开 post_show.dart,在这个 State 类里面,添加一个属性,用 late ,类型是 PostShowStore,名字是 postShowStore 。
在 initState 这个方法里,设置一下 postShowStore,等于 context.read ,类型是 PostShowStore。 然后下面判断小部件里的 post 是不是 null ,如果是,执行的是 postShowStore 里的 getPostById 这个方法,获取到内容数据。
再剪切一下这个 build 方法里的东西,我们可以先让它 return 一个 Observer 小部件,设置一下 builder 方法,一个 context 参数,把剪切的东西粘贴到这个 builder 里面。
...
然后在项目里找到 post_show_model.dart ,把这个文件从项目里删除掉。
在这个 post_show 里面,把导入 post_show_model 用的代码删除掉。
重新启动一下应用,在内容列表,选择打开一个内容项目,如果能正常显示这个内容页面,说明我们的改造成功了。