参数类型 '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 一个 FuturethemeMode 需要 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,
           ),
}}