Ошибка: значение типа AppStateNotifier не может быть присвоено переменной типа Widget

Следуя этому руководству. https://itnext.io/app-theming-in-flutter-dark-mode-light-mode-27d9adf3cee

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);
  runApp(
    ChangeNotifierProvider<AppStateNotifier>(
      builder: (context) => AppStateNotifier(), //<--COMPILER ERROR, details below.
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return Consumer<AppStateNotifier>(
      builder: (context, appState, child) {
        return MaterialApp(
          title: 'Lockify',
          debugShowCheckedModeBanner: false,
          theme: AppTheme.lightTheme, 
          darkTheme:
              AppTheme.darkTheme, 
          home: MyHomePage(),
          themeMode: appState.isDarkModeOn ? ThemeMode.dark : ThemeMode.light,
        );
      },
    );
  }
}

ОШИБКА: сообщение компилятора: lib/main.dart:16:29: Ошибка: значение типа "AppStateNotifier" не может быть присвоено переменной типа "Widget".

  • "AppStateNotifier" - это "пакет:lockify/appstatenotifier.dart" ("lib / appstatenotifier.dart").
  • "Виджет" взят из "package: flutter / src / widgets / framework.dart" ("../../Developer/flutter/packages/flutter/lib/src/widgets/framework.dart"). строитель: (context) => AppStateNotifier(),

lib / main.dart: 16:16: Ошибка: тип аргумента "Функция виджета (BuildContext)" не может быть назначен типу параметра "Функция виджета (BuildContext, Widget)".

  • "Виджет" взят из "package: flutter / src / widgets / framework.dart" ("../../Developer/flutter/packages/flutter/lib/src/widgets/framework.dart").
  • 'BuildContext' взят из 'package:flutter/src/widgets/framework.dart' ('../../Developer/flutter/packages/flutter/lib/src/widgets/framework.dart'). строитель: (контекст) => AppStateNotifier(),

1 ответ

Решение

Попробуйте изменить builder к create на ChangeNotifierProvider виджет.

Другие вопросы по тегам