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

Flutter ScreenUtilInit报错:命名参数'child'未定义 常规修复无效

报错原因
  • 你当前项目依赖的flutter_screenutil为6.0.0及以上的高版本,该版本对ScreenUtilInit做了不兼容的API调整:移除了原有的child命名参数,要求通过builder回调传入根节点组件。
  • 尝试替换为children参数无效,是因为ScreenUtilInit本身是屏幕适配初始化组件,并非Row/Column这类多子布局组件,从未提供过children参数,属于参数名误用。
  • flutter clean和flutter pub get仅负责清理构建缓存、同步依赖版本,无法修复API调用不匹配的语法错误,因此执行后报错不会消失。
修复方法

直接将原有的child参数替换为builder回调,把MaterialApp放到回调返回值中即可,修正后的代码如下:

@override
Widget build(BuildContext context) {
  return ScreenUtilInit(
    designSize: const Size(375, 812),
    allowFontScaling: false,
    // 替换原child参数为builder回调
    builder: (context, _) {
      return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: "Presence",
        theme: ThemeData(
          scaffoldBackgroundColor: Constants.scaffoldBackgroundColor,
          visualDensity: VisualDensity.adaptivePlatformDensity,
          textTheme: GoogleFonts.poppinsTextTheme(),
        ),
        initialRoute: "/",
        onGenerateRoute: _onGenerateRoute,
      );
    },
  );
}
  • 注意不要把MaterialApp放在ScreenUtilInit外层,否则会出现屏幕适配上下文不匹配、适配规则不生效的问题。
  • 如果暂时不想调整现有代码写法,也可以将pubspec.yaml中flutter_screenutil的版本固定为^5.9.0(该版本保留了child参数支持),同步依赖后原有代码可直接运行,但更推荐适配高版本API,减少后续的依赖冲突风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:06:28