参数类型“MaterialApp Function()”无法分配给参数类型“Widget Function(BuildContext)”

Muh*_*ari 11 dart flutter flutter-layout

我正在使用flutter_screenutil以下代码,但当我尝试运行它时,它给了我这个错误:

错误:参数类型“MaterialApp Function()”无法分配给参数类型“Widget Function(BuildContext)”。

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
      DeviceOrientation.portraitDown,
    ]);
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (_) {
            return themeChanger;
          },
        ),
        ChangeNotifierProvider(
          create: (_) {
            return settingChanger;
          },
        ),
        ChangeNotifierProvider(create: (_) {
          return locationChanger;
        })
      ],
      child: Consumer2<DarkThemeProvider, AdvancedSettingsProvider>(
          builder: (context, value1, value2, child) {
        return
            ScreenUtilInit(
                designSize: Size(1080, 2160),
            builder: () =>
            MaterialApp(
          builder: (context, widget) {
            ScreenUtil.setContext(context);
            return MediaQuery(
                data: MediaQuery.of(context).copyWith(textScaleFactor: 1),
                child: widget!);
          },
          theme: Styles.themeData(
              themeChanger.darkTheme, context, themeChanger.color),
          debugShowCheckedModeBanner: false,
          home: (widget.payload.isEmpty)
              ? Skeleton()
 [enter image description here][1]             : AccessedByNotifPage(
                  payload: widget.payload,
                ),
          ),
        );
      }),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

该图显示了错误:

这张图片显示了错误

小智 13

如果您使用ScreenUtilInit,则必须提供 Buildcontext 或在构建器函数回调中传递一个值。

使用:

return ScreenUtilInit(
    designSize: Size(1080, 2160),
    builder: (BuildContext context,child) => MaterialApp(
Run Code Online (Sandbox Code Playgroud)

或者:

return ScreenUtilInit(
        designSize: Size(1080, 2160),
        builder: (_,child) => MaterialApp(
Run Code Online (Sandbox Code Playgroud)


Md.*_*ikh 9

ScreenUtilInit: builder提供BuildContext回调,

在第 162 行执行builder: (_) => MaterialApp

return ScreenUtilInit(
    designSize: Size(1080, 2160),
    builder: (BuildContext c) => MaterialApp(
Run Code Online (Sandbox Code Playgroud)

  • 这并没有解决我的问题 (2认同)
  • 这取决于版本号。 (2认同)