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版本有问题时难以定位,最后还是回退代码才发现的。

相关推荐
恋猫de小郭1 小时前
深入 Flutter 和 Compose 的 PlatformView 实现对比,它们是如何接入平台控件
flutter
allanGold4 小时前
【flutter版本升级】【Nativeshell适配】nativeshell需要做哪些更改
flutter·nativeshell
昆仑道长6 小时前
ARM64平台Flutter环境搭建
flutter
sunly_6 小时前
Flutter:自定义Tab切换,订单列表页tab,tab吸顶
开发语言·javascript·flutter
2401_897907866 小时前
10天学会flutter DAY2 玩转dart 类
android·flutter
前端没钱6 小时前
flutter入门系列教程<一>:tab组件的灵活妙用
flutter
前端没钱10 小时前
flutter入门系列教程<2>:Http请求库-dio的使用
网络协议·flutter·http
LuiChun10 小时前
Flutter接django后台文件通道
python·flutter·django
2401_8975796521 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter
kirk_wang2 天前
Flutter调用HarmonyOS NEXT原生相机拍摄&相册选择照片视频
flutter·华为·harmonyos