#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