最近有个需求,a页面是联系人目录页面,b页面是添加联系人页面,由a打开b,为了降低耦合性,b只负责拿到联系人的信息,由a判断是否符合规范,可以添加。这就要求要用回调的方法来解决。用了2种解决方法。
1、也是网上流传的,写一个接口,用manager单例实现,再在a中注册,d中调用。**就相当于有一个全局的方法,在a中实现,d中调用。**会导致内存泄漏问题,还没有了解过怎么解决。
https://blog.csdn.net/k741451/article/details/51615783
由于我的需求有特殊性,是直接a->b的,没有跨页面调用。所以可以用更简单的方式来处理。
2、我这里是flutter项目,用dart来实现的。
2.1、在d中定义一个回调
typedef OnCheckCallback = int Function(String phone);
2.2、实例化出来
final OnCheckCallback onCheck;
在d中可以直接通过onCheck来调用。如果需要返回就可以
Navigator.pop(context, item);
2.3、在a中
Navigator.push(context, MaterialPageRoute(builder: (_){
return AddEmergencyContactWidget(onCheck: (phone){
//业务代码,处理这个传过来的参数phone
},);
})).then((e) {
if(e is EmergencyContactInfo){ //处理返回过来的item,这个info是返回的item的类型
//业务代码
}
});