0

我是 Flutter 的初学者,只是按照关于构建用户配置文件的YouTube 教程进行操作,但一切正常,但是 Theme Provider 给了我错误,我不明白发生了什么你们可以帮助我,错误是The method 'of' isn't defined for the type 'ThemeProvider',我在

@override
  Widget build(BuildContext context) {
    final user = UserPreferences.getUser();
    return ThemeProvider(
      initTheme: user.isDarkMode ?  MyThemes.darkTheme : MyThemes.lightTheme,
      child: Builder(
        builder: (context) => MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: ThemeProvider.of(context),
          title: title,
          home:  const ProfilePage(),
        ),
      ),
    );
  }

完整的代码很长,所以我附上github链接供参考,谢谢你的进步。主题提供者错误

在依赖更新 theme_provider 之后,我在下面又遇到了 2 个错误,我附上了theme_provider 错误它的屏幕截图。

4

3 回答 3

0

不要跳过阅读文档。请记住您的模块文档。

这是您的包所有者的样本。请仔细检查。

    ThemeProvider(
          initTheme: initTheme,
   ---->  builder: (context, myTheme) {
            return MaterialApp(
              title: 'Flutter Demo',
        ----> theme: myTheme,
              home: MyHomePage(),
            );
          }),
        ),
于 2022-02-08T08:56:53.593 回答
0

我相信它已经改变为

ThemeModelInheritedNotifier.of(context).theme.brightness

您可以在您的材料应用程序中使用构建器并通过它传递主题,就像在此处的文档中所做的那样

于 2022-02-28T10:56:48.760 回答
-1

不是主题。_ 你可以在这里查看官方文档

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final user = UserPreferences.getUser();
    return ThemeProvider(
      initTheme: user.isDarkMode ?  MyThemes.darkTheme : MyThemes.lightTheme,
      child: Builder(
        builder: (context) => MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: ThemeProvider.themeOf(context),
          title: title,
          home:  const ProfilePage(),
        ),
      ),
    );
  }
          ),
        ),
      ),
    );
  }
}
于 2021-12-14T11:55:29.170 回答