Я использую blo c для управления состоянием своего приложения, я хочу предоставить blo c для всех страниц своего приложения, чтобы я вставил его в верхнюю часть дерева виджетов, чтобы я мог использовать его из любого места в дерево виджетов, я использовал его следующим образом:
1- главная страница
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}}
class MyAppState extends State<MyApp>{
@override
Widget build(BuildContext context) {
return BlocProvider<MyBloc>(
create: (BuildContext context) {
return MyBloc();
},
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: secondPage()),
);
}
}
2- секундная страница:
class SecondPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return SecondPage State();
}
}
class SecondPage State extends State<SecondPage > {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('secondPage')),
body: BlocBuilder<CityBloc, CityState>(
builder: (BuildContext context, CityState state) {
.......
},));}}
, но флаттер отображает ошибку, которая
BlocProvider.of() called with a context that does not contain a Bloc of type MyBloc
и это скриншот дерева виджетов приложения ![widget tree screenshot](https://i.stack.imgur.com/tTvvz.png)
, в чем ошибка, я хочу предоставить myblo c для всех widgets
примечание: приложение работает нормально, если я записываю класс MainPage и класс secondPage на одной странице, но когда я их разделяю, появляется ошибка