【flutter h5微信开放标签拉起app】

本文介绍了如何在Flutter应用中引入fluwx库处理微信H5页面的分享事件,通过获取开放标签信息来决定是否跳转到详细内容页,并解决使用fluwx时可能出现的Android白屏问题,涉及AndroidManifest.xml配置。
摘要由CSDN通过智能技术生成

分享到微信的h5网页中点击调起app
1.引入第三方包fluwx:3.13.1
2.在app首页注册微信开放sdk、调用获取开放标签的方法

_initFluwx() async {
	//注册
    await registerWxApi(appId: 'wxadlklakd5dkl6', doOnIOS: false);
    _getWxMsg();
  }
  
  //获取开放标签信息
  _getWxMsg() async {
    String wxMsg = await getExtMsg();
    if(wxMsg !=null){
      Map<String, dynamic> dataMap;
      if(wxMsg.contains('extmsg=')){
        String data = wxMsg.split("extmsg=")[1];
        dataMap = json.decode(data);
      }else{
        dataMap = json.decode(wxMsg);
      }

      var cateId = dataMap['cateId'];
      var articleId = dataMap['articleId'];
      if(cateId == 34 || cateId == '34'){
        if(mounted){
        //获取到需要的信息后跳转详情
          NavigatorUtil.push(PromotionPostDetail(id: '$articleId'));
        }
      }
    }
  }
  
//调用==============
 
  void initState() {
  _initFluwx();
  }


  void didChangeAppLifecycleState(AppLifecycleState state) {
    // TODO: implement didChangeAppLifecycleState
    super.didChangeAppLifecycleState(state);
    switch(state){
      case AppLifecycleState.inactive:
        print('======inactive');
        break;
      case AppLifecycleState.resumed:
        print('======resumed');
        _getWxMsg();
        break;
      case AppLifecycleState.paused:
        print('======paused');
        break;
      case AppLifecycleState.detached:
        print('======detached');
        break;
    }
  }

3.使用fluwx拉起flutter白屏问题
在app的AndroidMainfest.xml中添加
在这里插入代码片

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jarvan.fluwx_example">
    //这个=======(缺少这个导致白屏)
    <queries>
        <intent>
            <action android:name="${applicationId}.FlutterActivity" />
        </intent>
    </queries>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher"
        android:label="fluwx_example">

		//这个=======
        <meta-data
            android:name="weChatAppId"
            android:value="12345678" />
		//这个=======
        <meta-data
            android:name="handleWeChatRequestByFluwx"
            android:value="true" />

        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:exported="true"
            android:theme="@style/LaunchTheme"
            android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            //这个=====
            <intent-filter>
                <action android:name="${applicationId}.FlutterActivity" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                //这个=======
                <data
                    android:host="${applicationId}"
                    android:path="/"
                    android:scheme="wechatextmsg" />
            </intent-filter>
        </activity>
       
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

### 回答1: Flutter 是 Google 开发的跨平台移动应用开发框架,支持 Android 和 iOS 平台。它使用 Dart 语言,提供了高性能和可定制化的 UI 组件,可以快速开发美观且性能优秀的应用。 Uni App 是使用 Vue.js 开发的跨平台移动应用开发框架,支持 Android、iOS、H5微信小程序等平台。它使用 JavaScript 语言,提供了丰富的组件库和强大的动态效果,可以使用一套代码同时开发多个平台的应用。 总之, Flutter 与 Uni App 是两种不同的跨平台移动应用开发框架,使用不同的语言和技术,可以适用于不同的场景。 ### 回答2: Flutter 和 Uni-app 是两种不同的跨平台移动应用开发框架。下面是它们的区别: 1. 开发语言:Flutter 使用 Dart 语言进行开发,而 Uni-app 使用 Vue.js 进行开发。Dart 是一门由谷歌开发的编程语言,而 Vue.js 是一款流行的前端框架。 2. 平台支持:Flutter 支持 Android 和 iOS 平台,而 Uni-app 支持更多平台,包括 Android、iOS、Web、微信小程序、快应用等。 3. 性能和稳定性:Flutter 通过使用自身的渲染引擎进行绘制,具有卓越的性能和稳定性。而 Uni-app 通过将代码转化为各个平台原生组件进行渲染,因此在性能和稳定性方面可能稍逊一些。 4. 生态圈:Flutter 是一个相对较新的框架,但已经拥有了庞大的开发者社区和丰富的插件生态系统。Uni-app 则是基于 Vue.js 的开发生态圈,由于 Vue.js 本身的流行度,相应的插件和社区资源也比较丰富。 5. 学习曲线:对于已经熟悉 Vue.js 开发的开发者来说,学习 Uni-app 相对容易。而对于初学者来说,由于 Flutter 使用的是 Dart 语言,可能会有一定的学习曲线。 综上所述,Flutter 和 Uni-app 在开发语言、平台支持、性能和稳定性、生态圈以及学习曲线等方面存在差异。开发者可以根据项目需求、个人技术栈以及团队配备等因素选择适合的开发框架。 ### 回答3: Flutter 和 Uni App 都是跨平台的移动应用开发框架。它们的主要区别如下: 1. 编程语言:Flutter 使用 Dart 语言进行开发,而 Uni App 则使用多个前端语言(如 Vue.js、React 等)。对于有 JavaScript 或前端开发经验的开发者来说,Uni App 更加容易上手。 2. 性能表现:Flutter 通过自己的渲染引擎进行渲染,因此性能较高,可以提供接近原生的用户体验。Uni App 则通过原生渲染,性能较 Flutter 稍低。 3. 开发范围:Flutter 可以开发 Android、iOS 和 Web 应用程序,而 Uni App 跨平台范围更广,可以开发 Android、iOS、Web、微信小程序、支付宝小程序、百度智能小程序等应用程序。 4. 插件生态系统:Flutter 社区拥有丰富的插件生态系统,使开发者可以轻松集成第三方服务和功能。Uni App 也有类似的插件生态系统,但相对来说还不如 Flutter 的成熟。 5. 开发者群体:由于 Flutter 是 Google 推出的开源项目,拥有庞大的开发者社区和活跃度,因此在开发资源、学习资料和问题解决方案方面更加丰富。Uni App 的开发者社区相对较小,但发展势头也很迅猛。 综上所述,选择 Flutter 还是 Uni App 取决于项目需求、开发者技术背景和个人偏好。如果追求更高的性能和更强大的生态系统,同时开发范围是多平台的,可以选择 Flutter;如果对开发难度有要求、重视跨平台范围,可以选择 Uni App
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值