Трепетать. Не удалось найти правильного поставщика над этим домашним виджетом

#flutter

Вопрос:

Я хотел добавить тему с поставщиком в свой код. Я адаптировал его из этого источника. https://github.com/lohanidamodar/flutter_theme_provider/blob/master/lib/main.dart .

Даже если это тот же код, я получил эту ошибку:

«Следующее исключение ProviderNotFoundException было вызвано строительством дома(грязно, состояние: _HomeState#c900c): Ошибка: Не удалось найти правильного поставщика над этим домашним виджетом» Это происходит потому, что вы использовали BuildContext , который не включает поставщика по вашему выбору.

 void main() async {
  setPathUrlStrategy();
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MaterialAppWithTheme());
}

class MaterialAppWithTheme extends StatefulWidget {
  @override
  _MaterialAppWithThemeState createState() => _MaterialAppWithThemeState();
}

class _MaterialAppWithThemeState extends State<MaterialAppWithTheme> {
  @override
  void initState() {
    super.initState();
    AppRouter appRouter = AppRouter(
      routes: AppRoutes.routes,
      notFoundHandler: AppRoutes.routeNotFoundHandler,
    );
    appRouter.setupRoutes();
  }

  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (_) => ThemeNotifier(),
      child: Consumer<ThemeNotifier>(
        builder: (context, ThemeNotifier notifier, child) {
          return MaterialApp(
            debugShowCheckedModeBanner: false,
            theme: notifier.darkTheme ? dark : light,
            onGenerateRoute: AppRouter.router.generator,
          );
        },
      ),
    );
  }
}
 

Ответ №1:

Измените это:

 create: (_) => ThemeNotifier(),
 

К этому:

 create: (context) => ThemeNotifier(),
 

Комментарии:

1. верните ChangeNotifierProvider<теменотификатор>(

2. ошибка гласит: «Не удалось найти правильного поставщика над этим домашним виджетом». Я не вижу вашего кода для виджета с именем Home