FlutterBoost适配Flutter3.38.4版本生成补丁包

Flutter 3.38.4 适配修改总结

1. App Lifecycle 状态变化适配(主要修改)

位置lib/src/boost_flutter_binding.dart

  • 重写 handleAppLifecycleStateChanged,适配官方引擎的 App Lifecycle 状态变化
  • 使用 _appLifecycleStateLocked 锁定机制,控制生命周期状态变更
  • 通过 changeAppLifecycleState 方法手动触发生命周期状态变更
22:39:lib/src/boost_flutter_binding.dart 复制代码
  @override
  void handleAppLifecycleStateChanged(AppLifecycleState state) {
    if (_appLifecycleStateLocked) {
      return;
    }
    Logger.log('boost_flutter_binding: '
        'handleAppLifecycleStateChanged ${state.toString()}');
    super.handleAppLifecycleStateChanged(state);
  }

  void changeAppLifecycleState(AppLifecycleState state) {
    if (SchedulerBinding.instance.lifecycleState == state) {
      return;
    }
    _appLifecycleStateLocked = false;
    handleAppLifecycleStateChanged(state);
    _appLifecycleStateLocked = true;
  }

位置lib/src/flutter_boost_app.dart

  • _addAppLifecycleStateEventListener 中处理原生端发送的生命周期事件
  • 根据容器数量决定 Flutter 的 resume 和 pause 状态
  • 参考了 Flutter Engine PR #42418 的实现
122:141:lib/src/flutter_boost_app.dart 复制代码
  void _addAppLifecycleStateEventListener() {
    _lifecycleStateListenerRemover = BoostChannel.instance
        .addEventListener(_appLifecycleChangedKey, (key, arguments) {
      // we just deal two situation,resume and pause
      // and 1 is resumed
      // and 4 is paused
      // See https://github.com/flutter/engine/pull/42418 for more details.

      final int? index = arguments["lifecycleState"];

      if (index == AppLifecycleState.resumed.index) {
        BoostFlutterBinding.instance!
            .changeAppLifecycleState(AppLifecycleState.resumed);
      } else if (index == AppLifecycleState.paused.index) {
        BoostFlutterBinding.instance!
            .changeAppLifecycleState(AppLifecycleState.paused);
      }
      return Future<dynamic>.value();
    });
  }

2. 使用 mixin 修饰符

位置lib/src/boost_flutter_binding.dart

  • BoostFlutterBinding 改为 mixin,避免破坏用户代码
  • 这是 CHANGELOG 5.0.1 中提到的修改
10:10:lib/src/boost_flutter_binding.dart 复制代码
mixin BoostFlutterBinding on WidgetsFlutterBinding {

3. Android 端命名空间修复

  • 在 Android 端添加了命名空间配置(CHANGELOG 5.0.2 第 2 条)

核心适配原理

Flutter 3.38.4 中官方引擎的 App Lifecycle 状态管理机制发生变化。FlutterBoost 通过:

  1. 拦截并控制 handleAppLifecycleStateChanged 的调用
  2. 根据原生容器数量决定 Flutter 应用的生命周期状态
  3. 使用锁定机制避免与官方引擎的生命周期管理冲突

这些修改确保了 FlutterBoost 在 Flutter 3.38.4 下的正常运行,同时保持了与原生应用生命周期的正确同步。

补丁包地址

FlutterBoost适配Flutter3.38.4版本补丁包

相关推荐
renke336420 小时前
Flutter for OpenHarmony:色彩捕手——基于HSL色轮与感知色差的交互式色觉训练系统
flutter
子春一1 天前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
铅笔侠_小龙虾1 天前
Flutter 实战: 计算器
开发语言·javascript·flutter
微祎_1 天前
Flutter for OpenHarmony:构建一个 Flutter 重力弹球游戏,2D 物理引擎、手势交互与关卡设计的工程实现
flutter·游戏·交互
一起养小猫1 天前
Flutter for OpenHarmony 实战_魔方应用UI设计与交互优化
flutter·ui·交互·harmonyos
hudawei9961 天前
flutter和Android动画的对比
android·flutter·动画
一只大侠的侠1 天前
Flutter开源鸿蒙跨平台训练营 Day7Flutter+ArkTS双方案实现轮播图+搜索框+导航组件
flutter·开源·harmonyos
一只大侠的侠1 天前
Flutter开源鸿蒙跨平台训练营 Day9分类数据的获取与渲染实现
flutter·开源·harmonyos
一只大侠的侠1 天前
Flutter开源鸿蒙跨平台训练营 Day 5Flutter开发鸿蒙电商应用
flutter·开源·harmonyos
ZH15455891311 天前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter