场景:从微信h5跳转打开app时携带参数,根据参数跳转到对应界面。
- 热启动
app没有杀掉后台,App只是从后台恢复,Flutter引擎保持运行,参数传递正常。 - 冷启动
App完全关闭后启动,Flutter引擎需要重新初始化,此时原生端到Flutter端的参数传递可能还未完成
final Fluwx fluwx = Fluwx();
Function(WeChatResponse)? responseListener;
void initState() {
super.initState();
_init();
}
void dispose() {
fluwx.removeSubscriber(responseListener);
super.dispose();
}
_init()async{
final isRegister = await fluwx.registerApi(appId: CommonConfig.wChatOpenSdkAppId, doOnIOS: true,universalLink: CommonConfig.wechatUniversalLink);
if(isRegister == true){
setWxExtResponseListener();
}
}
setWxExtResponseListener (){
responseListener = (WeChatResponse response) {
if (response is WeChatShowMessageFromWXRequest ) {
// Android 平台处理
getWxMsg(wxMessage: response.extMsg);
}else if(response is WeChatLaunchFromWXRequest){
// iOS 平台处理
getWxMsg(wxMessage: response.extMsg);
}
};
if(responseListener != null){
_fluwx.addSubscriber(responseListener!);
//从冷启动重新加载数据(关键)
_fluwx.attemptToResumeMsgFromWx();
}
}
getWxMsg({String? wxMessage}) async {
String? wxMsg;
if (wxMessage == null) {
//这个只在热启动(app没有杀掉后台)时有效
wxMsg = await fluwx.getExtMsg();
} else {
wxMsg = wxMessage;
}
///处理参数或跳转页面等逻辑
}
//热启动时,能正常获取到参数,但是冷启动获取不到,返回的是null。在不需要考虑冷启动时,使用该方法更简便
_hotBoot(){
String? wxMsg = await fluwx.getExtMsg();
}

1600

被折叠的 条评论
为什么被折叠?



