在 flutter_bloc 中提供后无法立即消耗一肘
unable to immediately consume a cubit after providing it in flutter_bloc
我正在使用 flutter_bloc 和 cubits 作为我的 flutter 应用程序的状态,我是整个 bloc 架构的新手,但我了解基础知识,我的问题是,我不想包装我整个应用程序的根目录与供应商,
因为状态只会在树中更深的小部件中使用一次,但可以从它的更多子项中进行修改,
我正在尝试使用 BlocProvider 将 cubit 传递给上下文,并立即使用它,而不是将它分离到另一个无状态小部件中,
BlocProvider(
create: (BuildContext context) => SearchResultsCubit(),
child: ListView.builder(
itemCount:
BlocProvider.of<SearchResultsCubit>(context).state.length,
在 itemCount 中,我试图访问紧靠其上方的 BlocProvider 提供的状态,但它似乎不起作用。
该应用程序将抛出一个错误,指出它无法找到所述提供者,
如果有人能指出我哪里出错了或者我可以使用什么其他方法来实现这个结果,我将不胜感激
谢谢。
朋友。你可以试试这个结构。
当然,你应该实现你的腕尺。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
create: (context) => SearchResultsCubit(),
child: SecondPage(),
));
}
}
class SecondPage extends StatelessWidget {
const SecondPage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocBuilder<SearchResultsCubit, SearchResultsState>(
builder: (context, state) {
return Container(
width: double.infinity,
height: 100.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) => Container(
width: 50.0,
height: 100.0,
child: Center(child: Text(state[index].text))),
itemCount: state.length,
),
);
},
);
}
}
我正在使用 flutter_bloc 和 cubits 作为我的 flutter 应用程序的状态,我是整个 bloc 架构的新手,但我了解基础知识,我的问题是,我不想包装我整个应用程序的根目录与供应商, 因为状态只会在树中更深的小部件中使用一次,但可以从它的更多子项中进行修改,
我正在尝试使用 BlocProvider 将 cubit 传递给上下文,并立即使用它,而不是将它分离到另一个无状态小部件中,
BlocProvider(
create: (BuildContext context) => SearchResultsCubit(),
child: ListView.builder(
itemCount:
BlocProvider.of<SearchResultsCubit>(context).state.length,
在 itemCount 中,我试图访问紧靠其上方的 BlocProvider 提供的状态,但它似乎不起作用。
该应用程序将抛出一个错误,指出它无法找到所述提供者, 如果有人能指出我哪里出错了或者我可以使用什么其他方法来实现这个结果,我将不胜感激
谢谢。
朋友。你可以试试这个结构。 当然,你应该实现你的腕尺。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BlocProvider(
create: (context) => SearchResultsCubit(),
child: SecondPage(),
));
}
}
class SecondPage extends StatelessWidget {
const SecondPage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocBuilder<SearchResultsCubit, SearchResultsState>(
builder: (context, state) {
return Container(
width: double.infinity,
height: 100.0,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) => Container(
width: 50.0,
height: 100.0,
child: Center(child: Text(state[index].text))),
itemCount: state.length,
),
);
},
);
}
}