flutter - 在flutter_bloc中提供后无法立即消耗一肘
问题描述
我正在使用flutter_bloc和cubits作为我的flutter应用程序的状态,我是整个bloc架构的新手,但我了解基本原理,我的问题是,我不想用Provider包装我的整个应用程序的根,因为状态只会在树中更深的小部件中使用一次,但可以从它的进一步子级中修改,
我正在尝试使用 BlocProvider 将 cubit 传递给上下文,并立即使用它,而不是将其分离到另一个无状态小部件中,
BlocProvider(
create: (BuildContext context) => SearchResultsCubit(),
child: ListView.builder(
itemCount:
BlocProvider.of<SearchResultsCubit>(context).state.length,
在 itemCount 中,我试图访问 BlocProvider 正上方提供的状态,但它似乎不起作用。
该应用程序将抛出一个错误,说它无法找到所述提供者,如果有人能指出我哪里出错或我可以使用什么其他方法来实现这个结果,我将不胜感激
谢谢你。
解决方案
朋友。你可以试试这个结构。当然,你应该实现你的 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,
),
);
},
);
}
}
推荐阅读
- heroku - heroku - 项目无法更新:
- .net-core - PCF中两个微服务之间的身份验证
- compression - 获取嵌入式zlib压缩文件的压缩大小
- angular - 在 Angular 7 中重用具有属性的模板
- javascript - 三个js更新tubegeometry不可见r100
- python - 需要帮助将 2 个切片索引绘制到 python 中的条形图中
- python - Tweepy 一次查找多条推文的扩展推文?
- php - Laravel 日期时间 created_at
- reactjs - 在 React 中,在继承 propTypes 时,如何避免重复?
- matlab - 在 MATLAB 中进行矢量化以避免 for 循环