You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter代码在Android真机显示灰色屏,模拟器正常求助

Flutter真机显示灰色屏幕问题修复

问题根源分析

  1. 语法错误:第一个GestureDetector的onTap回调缺失大括号,导致代码编译异常,真机对这类错误的渲染表现更直接。
  2. 布局错误:已指定高度的Container内部嵌套了Expanded,而Expanded仅能在Row/Column等Flex布局容器中使用,这种错误会触发布局渲染失败。
  3. 资源文件潜在问题:含特殊变音字符的文件名(如Frühstück.jpg)在真机上可能存在路径解析问题,需确保资源配置和文件名完全匹配。

修复后的完整代码

body: Column(
  children: [
    Container(
      height: MediaQuery.of(context).size.height / 8,
      color: Colors.red,
      child: Padding(
        padding: EdgeInsets.all(5),
        child: Row(
          children: [
            Expanded(
              child: Padding(
                padding: EdgeInsets.all(2),
                child: Column(
                  children: [
                    GestureDetector(
                      onTap: () {},
                      child: CircleAvatar(
                        radius: 30,
                        backgroundColor: Colors.blue,
                        backgroundImage: AssetImage("assets/images/Frühstück.jpg"),
                      ),
                    ),
                    Text("Frühstück")
                  ],
                ),
              ),
            ),
            Expanded(
              child: Padding(
                padding: EdgeInsets.all(2),
                child: Column(
                  children: [
                    GestureDetector(
                      onTap: () {
                        print("111");
                      },
                      child: CircleAvatar(
                        radius: 30,
                        backgroundColor: Colors.blue,
                        backgroundImage: AssetImage("assets/images/Frühstück.jpg"),
                      ),
                    ),
                    Text("Frühstück")
                  ],
                ),
              ),
            ),
            Expanded(
              child: Padding(
                padding: EdgeInsets.all(2),
                child: Column(
                  children: [
                    GestureDetector(
                      onTap: () {},
                      child: CircleAvatar(
                        radius: 30,
                        backgroundColor: Colors.blue,
                        backgroundImage: AssetImage("assets/images/Frühstück.jpg"),
                      ),
                    ),
                    Text("Frühstück")
                  ],
                ),
              ),
            )
          ],
        ),
      ),
    ),
    Expanded(
      child: ListView.builder(
        itemCount: displayed_meal_list.length,
        itemBuilder: (context, index) => ListTile(
          contentPadding: EdgeInsets.all(10),
          leading: Image(image: AssetImage(displayed_meal_list[index].meal_image!)),
          title: Text(displayed_meal_list[index].meal_title!),
          subtitle: Text("${displayed_meal_list[index].meal_time!} min"),
        ),
      ),
    ),
  ],
)

额外检查步骤

  • 确认pubspec.yaml中正确声明资源:
    flutter:
      assets:
        - assets/images/Frühstück.jpg
    
  • 保证真机上的资源文件路径、大小写与代码完全一致(Android系统对路径大小写敏感)。
  • 执行flutter clean清除缓存后重新编译项目。

内容的提问来源于stack exchange,提问作者Semjon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:28:20