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版本补丁包

相关推荐
qziovv7 小时前
前端转flutter——项目架构、初始化
前端·flutter
恋猫de小郭10 小时前
Flutter 3.47 首坑,analysis_options 问题连环回归
android·前端·flutter
xiangxiongfly91511 小时前
Flutter flutter_gen_runner总结
flutter·flutter_gen
GitLqr1 天前
Flutter 3.47 与 Dart 3.13:你必须了解的迁移指南
flutter·ios·dart
程序员老刘1 天前
跨平台开发地图 | 2026年8月
flutter·ai编程·客户端
杉氧1 天前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
恋猫de小郭1 天前
Dart 3.13 大更新,感觉比 Flutter 更带劲
android·前端·flutter
静水流深zz2 天前
Flutter AI Harness 如何让 Agent 参与软件开发全流程
android·前端·人工智能·flutter·大前端
SoaringHeart3 天前
Flutter最佳实践:Web项目中文字体首次加载乱码问题解决
前端·flutter
程序员老刘3 天前
Flutter 3.47 更新要点:Material 正式分家,老项目先别急着更新
flutter·ai编程·客户端