目录 [隐藏]
前言
我们通常有这样一个需求:点击修改用户信息需要跳转页面,修改完成以后返回之前的页面我们需要重新获取新的数据刷新修改后的数据。于是就找方法去实现,目前我用过的就是以下三种方法。
代码地址
优点
- 可以在返回页面的时候在
pop中传入参数Navigator.pop(context, '数据传参'),.then(value => print(value)),value的值就是数据传参。(使用手势返回接收不到参数值打印为null) .then方法中可以监听到手势返回和Navigator.pop返回。
缺点
- 页面上跳转不同页面较多需要在每一个
then方法中处理,哪怕写成公共方法也需要都加一次。
用法
// 路由跳转监听返回该页面
Navigator.of(context).pushNamed(
'/newView',
arguments: NewView(
content: '网络搜索结果汉语- 维基百科,自由的百科全书',
),
).then((value) => print(value));
// 返回之前的页面带上参数
Navigator.pop(context, '数据传参');
效果展示
deactivate
优点
- 返回到该页面的时候我们只需要在一个地方发请求获取新的数据,不需要单独加在每一个页面跳转的
then方法内,理论上可以满足我们的需求。
缺点
- 虽然
deactivate会被触发,但是进入页面或者返回页面都会被触发,于是使用ModalRoute.of(context).isCurrent判断是否是当前页面,为true就发请求获取新的页面。当使用手势返回的时一直是false,就会导致不发请求刷新数据。 - 不能直接获取到参数
用法
void deactivate() {
super.deactivate();
var bool = ModalRoute.of(context).isCurrent;
if (bool) {
// 监听到页面返回,发请求刷新页面操作
print('返回NewView页面');
}
}
效果展示
didPopNext
优点
didPopNext可以弥补手势返回不触发的问题,我们也不需要去写额外的判断。
缺点
- 不能直接获取到参数
用法
//



所有评论(0)