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

Flutter使用ScreenUtilInit报invalid constant value错误求助

解决ScreenUtilInit中builder的"invalid constant value"错误

错误原因

你给ScreenUtilInit添加了const修饰,但builder参数接收的是函数对象,函数无法被编译为常量值,因此触发该错误。

修复步骤

  1. 移除ScreenUtilInit前的const:由于它包含非常量的builder参数,不符合常量组件的定义要求。
  2. 检查GetMaterialApp的const:如果defaultHome不是常量组件,需要同步移除GetMaterialApp前的const。

修改后的代码

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      useInheritedMediaQuery: true,
      designSize: const Size(375, 812), // Size是常量构造,可保留const
      minTextAdapt: true,
      splitScreenMode: true,
      builder: (context, child){
        // 若defaultHome是常量组件,可恢复GetMaterialApp前的const
        return GetMaterialApp(
          debugShowCheckedModeBanner: false,
          title: "JobMon",
          theme: ThemeData(
            scaffoldBackgroundColor: kLight,
            iconTheme: IconThemeData(color: kDark),
            primaryColor: Colors.grey,
          ),
          home: defaultHome,
        );
      },
    );
  }
}

补充说明

Flutter中,只有当组件的所有参数都是常量类型(比如数字、字符串、常量构造的对象)时,才能用const修饰组件。builder是动态生成的函数,不属于常量范畴,所以外层ScreenUtilInit不能加const。如果defaultHome是用const声明的组件,GetMaterialApp前的const可以保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:45:04