没有为“ThemeProvider”类型定义“of”方法。在颤振中

Posted

技术标签:

【中文标题】没有为“ThemeProvider”类型定义“of”方法。在颤振中【英文标题】:The method 'of' isn't defined for the type 'ThemeProvider'. in Flutter 【发布时间】:2022-01-17 17:22:57 【问题描述】:

我是 Flutter 的初学者,只是按照 YouTube tutorial 构建用户配置文件,而一切正常,但 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 link 供参考,谢谢你的进步。

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

【问题讨论】:

【参考方案1】:

它是 themeOf 而不是 of。 可以查看官方文档here

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(),
        ),
      ),
    );
  
          ),
        ),
      ),
    );
  

【讨论】:

嘿@Saral 仍然出现错误,方法 'themeOf' 没有为类型 'ThemeProvider' 定义 你是否在依赖项中添加了theme_provider并导入到你的文件中? 因为我在你的 github 代码中看不到这一点 没有,但是现在我在依赖项中添加了theme_provider并导入它,现在我又遇到了2个错误我将更新错误的屏幕截图你可以在上面看到它。

以上是关于没有为“ThemeProvider”类型定义“of”方法。在颤振中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Enzymes shallow 和 styled-component 的 ThemeProvider 测试样式化组件?

已发布的样式组件反应库无权访问用户应用程序 ThemeProvider

为啥 css-in-js 系统需要 ThemeProvider/useTheme

ThemeProvider 的 Jest Manual Mock

使用 Themeprovider 和样式化组件实现暗模式

在样式化组件 UI 库上使用 ThemeProvider