我在main.dart
文件中有一个简单的类MyApp
,其中有两个函数(setLocale
,setThemeMode
)。
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
static State<MyApp> of(BuildContext context) =>
context.findAncestorStateOfType<_MyAppState>()!;
}
class _MyAppState extends State<MyApp> {
void setLocale(String language) {}
void setThemeMode(ThemeMode mode) {}
}
我想在不同文件flutter_flow.dart
中的函数中使用它们(没有类,带有这些函数的干净文件)。
void setAppLanguage(BuildContext context, String language) =>
MyApp.of(context).setLocale(language);
void setDarkModeSetting(BuildContext context, ThemeMode themeMode) =>
MyApp.of(context).setThemeMode(themeMode);
我被这个错误困住了。The method 'setLocale' isn't defined for the type 'State'. Try correcting the name to the name of an existing method, or defining a method named 'setLocale'.
据我所知,虽然我用类MyApp导入文件,但文件看不到此方法。我可以寻求帮助吗?我该做什么?在哪里寻找解决方案?
1条答案
按热度按时间hlswsv351#
您需要更改
到
使用您当前的代码,当您这样做
它返回类型
State<MyApp>
,这是泛型State
类from flutter,它不包含任何自定义方法。当您将
of(BuildContext context)
的返回值更改为_MyAppState
时,MyApp.of(context)
将返回_MyAppState
类型。dart分析器知道它有您的自定义方法setLocale
和setThemeMode
,并且不会再抛出错误。