修改内容 Store(PostShowStore)

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

在内容页面,如果它的父部件没有给它传递内容数据,创建这个小部件的时候就会请求服务端接口获取到内容数据。之前这个获取内容数据用的方法是在一个 model 里定义的。我们现在可以把这个方法转移到内容页面的 store 里。

打开 post_show_store,在里面添加一个新的属性,类型是 AppService 名字是 appService。然后再添加一个数据,用 @observable 标注一下,类型是 bool 名字是 loading 默认值是 false。下面再添加一个数据,类型是 Post? 名字是 post 。

在动作这里再定义一个动作,用 @action 标注一下,名字是 setLoading,一个 bool 类型的 data 参数,让 loading 等于这个 data 参数的值。再定义一个动作,名字是 setPost,接收一个 Post 类型的参数,名字是 data 。

getPostById

下面再定义一个请求内容数据用的方法,用我们在项目里添加的代码片断,输入 acm,按下 tab。返回的值的类型是 Future 名字是 getPostById,接收一个 String 类型的参数,名字是 postId 。

请求的接口地址是 /posts/$postId 。再导入这里需要的这些东西,导入 AppConfig,还有 jsonDecode 所在的包,然后是这个 HttpException 。

请求失败就报个错 ,请求成功可以执行 setPost 动作,把 responseBody 交给它。

然后修改一下构造方法,添加几个带名字的参数,用 required 标记一下 this.appService,再添加一个 this.post ,还有一个 this.mediaAspectRatio。 提示还需要 loading ,这里我们可以找到 loading 这个数据,直接给它提供一个值,让它等于 false。

post_provider.dart

找开 post_provider.dart ,修改一下 postShowStoreProvider,这里现在要用一个 ProxyProvider,第一个类型是 AppService,第二个类型是 PostShowStore。

然后设置一下 update,这个方法有三个参数,context,appService 还有 postShowStore。

在方法里面 return 一个 postShowStore,设置一下 appService 参数,值是 appService,再设置一下 post,值是 postShowStore?.post ,然后是 mediaAspectRatio,值是 postShowStore?.mediaAspectRatio。

修改内容 Store(PostShowStore)《 Flutter 移动端实例:内容导航 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点