参数类型 'Future<ThemeMode> Function()' 无法分配给参数类型 'ThemeMode'
The argument type 'Future<ThemeMode> Function()' can't be assigned to the parameter type 'ThemeMode'
我需要根据用户喜好创建深色或浅色主题,但出现错误“无法将参数类型 'Future Function()' 分配给参数类型 'ThemeMode'。”
发生。
代码是:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NeumorphicApp(
themeMode:getThemeTypeFromSharedPreferencess ,
),
}}
函数为:
Future<ThemeMode> getThemeTypeFromSharedPreferencess()async{
if( await getThemeType.call() ==false){
return ThemeMode.light;
}else{
return ThemeMode.dark;
}
}
发生这种情况是因为您的 getThemeTypeFromSharedPreferencess
函数 returns 一个 Future
和 themeMode
需要 ThemeMode
而不是 Future
13=]。要解决此问题,您可以使用 FutureBuilder and show a e.g. a CircularProgressIndicator 直到 Future
returns themeMode
然后您可以在 NeumorphicApp
.
中设置它
或者您可以在 void main 中执行此异步代码,如下所示:-
void main()async{
ThemeMode mode;
WidgetsFlutterBinding.ensureInitialized();
if( await getThemeType.call() ==false){
mode=ThemeMode.light;
}else{
mode=ThemeMode.dark;
}
runApp(MyApp(mode));//pass the mode to MyApp and then use it to show the theme
}
class MyApp extends StatelessWidget {
final ThemeMode mode;
MyApp(this.mode);
@override
Widget build(BuildContext context) {
return NeumorphicApp(
themeMode:mode,
),
}}
我需要根据用户喜好创建深色或浅色主题,但出现错误“无法将参数类型 'Future Function()' 分配给参数类型 'ThemeMode'。” 发生。
代码是:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NeumorphicApp(
themeMode:getThemeTypeFromSharedPreferencess ,
),
}}
函数为:
Future<ThemeMode> getThemeTypeFromSharedPreferencess()async{
if( await getThemeType.call() ==false){
return ThemeMode.light;
}else{
return ThemeMode.dark;
}
}
发生这种情况是因为您的 getThemeTypeFromSharedPreferencess
函数 returns 一个 Future
和 themeMode
需要 ThemeMode
而不是 Future
13=]。要解决此问题,您可以使用 FutureBuilder and show a e.g. a CircularProgressIndicator 直到 Future
returns themeMode
然后您可以在 NeumorphicApp
.
或者您可以在 void main 中执行此异步代码,如下所示:-
void main()async{
ThemeMode mode;
WidgetsFlutterBinding.ensureInitialized();
if( await getThemeType.call() ==false){
mode=ThemeMode.light;
}else{
mode=ThemeMode.dark;
}
runApp(MyApp(mode));//pass the mode to MyApp and then use it to show the theme
}
class MyApp extends StatelessWidget {
final ThemeMode mode;
MyApp(this.mode);
@override
Widget build(BuildContext context) {
return NeumorphicApp(
themeMode:mode,
),
}}