【问题标题】:Cubit State does not refresh inside BottomSheetCubit State 不会在 BottomSheet 内刷新
【发布时间】:2021-08-28 11:34:37
【问题描述】:

我有带有 CubitA 和 StateA 的 ScreenA。从 ScreenA,我打开一个模态底部表,并通过 BlocProvider.value() 传递 CubitA。 我在 BottomSheet 小部件中也有一个 BlocBuilder。

我可以在工作表内部正确使用 CubitA(例如:按下按钮时调用内部方法),但 BottomSheet 中的状态在更改后不会更新。

代码

showModalBottomSheet(
      context: context,
      isScrollControlled: true,
      backgroundColor: Colors.transparent,
      builder: (_) {
        final cubit = Provider.of<CubitA>(context);
        return BlocProvider.value(
          value: cubit,
          child: BottomSheetContent(),
        );
      },
    );

BottomSheetWidget

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.fromLTRB(30, 20, 30, 20),
      decoration: const BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(30),
            topRight: Radius.circular(30),
          )),
      child: SafeArea(
        top: false,
        child: BlocBuilder<OffersMapCubit, OffersMapState>(
            bloc: context.watch<OffersMapCubit>(),
            builder: (context, state) {
              THIS IS ONLY CALLED ONCE AT STARTUP BUT NEVER AGAIN
              return Content()...
              );
            }),
      ),
    );
  }

根据文档 (https://pub.dev/packages/flutter_bloc),通过使用 watchProvider.of(),子树中的小部件应侦听更改。

这是预期的行为吗? 我是不是做错了什么?

感谢任何帮助,谢谢!

【问题讨论】:

    标签: flutter flutter-bloc flutter-showmodalbottomsheet


    【解决方案1】:

    我遇到了同样的问题。关闭底页后,您需要处理肘。行为是底部表单小部件在关闭后被丢弃,因此我们需要重新创建我们的 cubit。

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 2022-07-23
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多