在flutter_bloc中提供后,无法立即使用肘

时间:2020-07-26 14:18:09

标签: flutter bloc flutter-bloc

我正在使用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紧接其上方的状态,但是它似乎不起作用。

该应用将抛出错误,提示它无法找到所述提供者, 如果有人能指出我做错了什么地方,或者我可以使用其他什么方法来达到这个结果,我将不胜感激

谢谢。

1 个答案:

答案 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,
          ),
        );
      },
    );
  }
}