flutter实践:慎用Expanded

问题:在一个Android原生的弹框里显示flutter view,由于使用了Expanded导致组件未显示出来

最神奇的地方在于debug调试模式显示正常,然后用release版本发布时怎么都显示不出来,还导致点击后无响应ANR

问题代码:

Dart 复制代码
child: StatefulBuilder(
        builder: (context, setState) {
          return Expanded(
            child: Container(
              padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
              decoration: BoxDecoration(
                  borderRadius: newStyle
                      ? const BorderRadius.only(
                          topLeft: Radius.circular(12),
                          topRight: Radius.circular(12),
                          bottomLeft: Radius.circular(0),
                          bottomRight: Radius.circular(0),
                        )
                      : BorderRadius.circular(4),
                  color: themeData.fillBase),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.start,
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: _buildSettingColumn(),
              ),
            ),
          );
        },
      ),

修改后代码:

Dart 复制代码
child: StatefulBuilder(
        builder: (context, setState) {
          return Container(
            width: 200,
            padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
            decoration: BoxDecoration(
                borderRadius: newStyle
                    ? const BorderRadius.only(
                        topLeft: Radius.circular(12),
                        topRight: Radius.circular(12),
                        bottomLeft: Radius.circular(0),
                        bottomRight: Radius.circular(0),
                      )
                    : BorderRadius.circular(4),
                color: themeData.fillBase),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: _buildSettingColumn(),
            ),
          );
        },
      ),

总结:自己挖的坑给自己上了一课,过程中最困难的是release版本有问题时难以定位,最后还是回退代码才发现的。

相关推荐
kirk_wang25 分钟前
Flutter艺术探索-Flutter性能优化基础:const与const构造函数
flutter·移动开发·flutter教程·移动开发教程
AiFlutter1 小时前
Flutter-Android不能通过apply script方法应用Gradle插件
android·flutter
恋猫de小郭1 小时前
Flutter 又迎大坑修改?iOS 26 键盘变化可能带来大量底层改动
android·flutter·ios·kotlin
lbb 小魔仙1 小时前
【Harmonyos】开源鸿蒙跨平台训练营DAY1:Windows上搭建Flutte跨平台开发环境
windows·flutter·harmonyos·鸿蒙·开源鸿蒙·鸿蒙开平台应用
猛扇赵四那边好嘴.2 小时前
Flutter 框架跨平台鸿蒙开发 - 数学练习应用开发教程
flutter·华为·harmonyos
[H*]2 小时前
Flutter框架跨平台鸿蒙开发——Image Providers详解
flutter·华为·harmonyos
鸣弦artha2 小时前
Flutter框架跨平台鸿蒙开发——EventChannel事件通道
flutter·华为·harmonyos
kirk_wang2 小时前
Flutter艺术探索-Flutter国际化:多语言支持实现
flutter·移动开发·flutter教程·移动开发教程
南村群童欺我老无力.2 小时前
Flutter 框架跨平台鸿蒙开发 - 打字练习应用开发教程
flutter·华为·harmonyos
猛扇赵四那边好嘴.2 小时前
Flutter 框架跨平台鸿蒙开发 - 录音工具应用开发教程
flutter·华为·harmonyos