用户登录

下面我们可以把请求内容列表接口得到的 JSON 数据,转换成一组 Post 类型的数据。打开项目里的 lib/post/index 下面的 post_index_model.dart,在这里定义一个新的方法,返回的值的类型是 List,列表项目的类型是 Post。方法的名字可以叫 parsePosts,接收一个 responseBody 参数。

在方法里面声明一个东西,类型是 List 名字叫 parsed ,它的值先用 jsonDecode 处理一下 responseBody,先转换一下 JSON 数据,接着调用 map 方法,项目类型是 Post,提供一个回调,参数名字叫 item,返回的值可以用一下 Post.fromJson 这个工厂方法,把 item 交给这个方法,这个方法会把提供的 Map 类型的数据转换成一个 Post 类型的数据。然后我们再调用一下 toList() 这个方法,把它转换成一个 List,这样得到的东西就是一个 List 类型的数据,里面的项目的类型是 Post。

修改一下这个类里的 posts 属性的类型,设置成 List ,再修改一下 getPosts 这个方法,这里可以声明一个 parsed,值用一下 parsePosts 这个方法,把请求得到的响应主体数据交给这个方法,这个数据现在是 JSON 格式的,parsePosts 这个方法会把它转换成一组 Post 。

下面让 posts 等于这个转换之后得到的值,也就是 parsed 。 最后可以让这个方法 return 一个值,return 的是 parsed。

测试

打开编辑器的调试,重新启动一下。再打开调试控制台,观察一下输出的东西,你会发现输出的 posts 的值,现在是一组 Instance of 'Post',也就是每个项目都是 Post 这个类的一个实例。

toJson

打开 post_list.dart,找到这里输出的 model 里的 posts ,这里我们用一下 model.posts.forEach 这个方法,提供一个回调,接收一个 post 参数,在这个方法里可以在控制台上输出 post,调用一下它的 toJson 这个方法。在这个 model.posts 的后面加上一个 ! 表示,断言它的值不是 null 。 保存一下文件。

这次在控制台上输出的东西,就是每一个 Post 里的具体的内容了。

设置 getPosts 返回值的类型

在 initState 里面,我们执行了这个 getPosts() 方法,鼠标放在上面,提示它返回的值是 dynamic,打开 post_index_model ,这里设置一下 getPosts 方法返回的值的类型,它是一个 Future ,这个 Future 最终提供的数据的类型是 List。再回到 post_list.dart,鼠标放在 getPosts 方法的上面,观察一下它返回的值的类型。

将内容列表 JSON 数据转换成一组内容(Post)类型的数据《 Flutter 2:内容列表 》

统计

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

社会化网络

关于

微信订阅号

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