我正在使用flutter_bloc和cubits来查看我的flutter应用程序的状态,我是整个bloc架构的新手,但我了解基本知识,我的问题是,我不想用Provider来包装整个App的根目录, 因为状态只会在树中更深的小部件中使用一次,但可以从其他子级中修改,
我正在尝试使用BlocProvider将cubit传递给上下文,并立即使用它,而不是将其分离到另一个无状态小部件中,
BlocProvider(
create: (BuildContext context) => SearchResultsCubit(),
child: ListView.builder(
itemCount:
BlocProvider.of<SearchResultsCubit>(context).state.length,
在itemCount中,我正在尝试访问由BlocProvider紧接其上方的状态,但是它似乎不起作用。
该应用将抛出错误,提示它无法找到所述提供者, 如果有人能指出我做错了什么地方,或者我可以使用其他什么方法来达到这个结果,我将不胜感激
谢谢。
答案 0 :(得分:1)
朋友。您可以尝试这种构造。 当然,您应该实现自己的Cubit。
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,
),
);
},
);
}
}